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

Сказать спасибо