python subprocess popen

В python subprocess popen — одна из наиболее часто используемых функций модуля subprocess. Позволяет выполнять системные команды на сервере и обрабатывать результаты в коде.

 

 

Использование python subprocess popen

Устанавливать пакеты дополнительно не требуется, модуль достаточно импортировать в скрипте

import subprocess

 

Далее объявляется переменная, которой передается массив из аргументов и дополнительные опции для перенаправления вывода и ошибок.

 

>> res = subprocess.Popen(['uname', '-a'], stdout=subprocess.PIPE)

 

>> uname = res.stdout.read().strip()

 

>> uname

b'Linux desktop 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:15:38 UTC 2018 i686 i686 i686 GNU/Linux'

 

На выходе получается структура тип bytes

 

>> print (type(uname))

<class 'bytes'>

 

Далее можно преобразовывать данные  в другой формат и использовать их любым способом.

 

Например, преобразование к строке и выбор произвольного элемента будут выглядеть так

 

>> uname = str(uname)

 

Тип теперь строка

>> print (type(uname))

<class 'str'>

 

 

Разделяем значения по «тире»

>> print (uname.split(«-«))

[«b'Linux desktop 4.15.0», '20', 'generic #21', «Ubuntu SMP Tue Apr 24 06:15:38 UTC 2018 i686 i686 i686 GNU/Linux'»]

 

 

Выводим первый элемент, его индекс — 0

>> print (uname.split(«-«)[0])

b'Linux desktop 4.15.0
 

В результате получен hostname машины (desktop), тип операционной системы и версия ядра.

 

Подробнее о методе split