Рейтинг:0

Запуск systemctl в скрипте Python

флаг cn

Я пытаюсь получить статус нескольких системад services в Python, но я продолжаю получать сообщение об ошибке FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'systemctl show -p ActiveState --value abc'

Я использую Ubuntu 20.04, как пользователь пользователь. abc.service файл находится в /etc/системд/система/, подробности ниже:

-rw-rw-r-- 1 root root 1542 5 августа 17:31 abc.service

Скрипт

подпроцесс импорта
status = subprocess.check_output("systemctl show -p ActiveState --value abc")
печать (статус)

Однако, если я запускаю systemctl команда напрямую, я могу получить статус активный. я пробовал с судо в скрипте, и я получаю ту же ошибку.

В связи с этим я подумал, что мне придется запустить команду, используя судо в конце концов, но на самом деле я запускаю команду как часть моего дага Airflow (т.е. не как отдельный скрипт, где я могу выполнять судо python3 myscript.py). Есть ли способ сделать это?

ajgringo619 avatar
флаг de
Я думаю, это поможет: https://stackoverflow.com/questions/2449250/any-way-to-assign-terminal-output-to-variable-with-python#2449301
Рейтинг:0
флаг cn

Я был неосторожен и не включил оболочка = Истина в моем подпроцесс. Как только я добавил его, он работает успешно.

status = subprocess.check_output("systemctl show -p ActiveState --value abc", shell=True)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.