В 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