Не могу запустить os.popen в скрипте Python - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь запустить эту команду в python.

BB = os.environ["BB"]
BBDISP = os.environ["BBDISP"]
NOW = datetime.datetime.now()
COLOR="green"
MSG="Widgets loaded successfully."
NODE="server01"

retvalue = os.popen("BB BBDISP \"status NODE.thisIsATest COLOR str(NOW) MSG \"").readlines()
print retvalue

И я получаю следующую ошибку:

sh: 1: BB: not found

Но я могу напечатать эту переменнуюна экран.

print BB

Вывод

/usr/lib/xymon/server/bin/xymon

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Вам нужно составить строку из переменных.Предпочтительный способ сделать это - метод format:

cmd = "{BB} {BBDISP} \"status {NODE}.thisIsATest {COLOR} str({NOW}) {MSG} \"".format(
    BB = os.environ["BB"],
    BBDISP = os.environ["BBDISP"],
    NOW = datetime.datetime.now(),
    COLOR="green",
    MSG="Widgets loaded successfully.",
    NODE="server01")
0 голосов
/ 27 мая 2018

Когда вы вызываете os.popen, строка, которую вы передаете, имеет действительную команду в оболочке операционной системы.То есть, если вы введете то же самое в окне терминала, поведение будет таким же.Тогда возникает вопрос: 0 «BB» - допустимая команда в оболочке операционной системы?

Я думаю, что вы можете достичь того, чего хотите, изменив строку на popen:

"%s %s \"status %s.thisIsATest %s %s %s \""%(BB,BBDISP,NODE,COLOR,str(NOW),MSG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...