bash внутри applescript внутри возвращаемого значения python3

#bash #macos #apache #python-3.x

#bash #macos #apache #python-3.x

Вопрос:

Я работаю над панелью управления для встроенного сервера apache в OSX / macOS и пытаюсь выполнить проверку состояния сервера — запущен он или нет. На mac нет фактической единой команды для проверки, работает ли сервер через httpd / apachectl (я использую последнее). Итак, я пытаюсь проверить, запустив сервер, а затем, если он выдает возвращаемое значение «все хорошо» (или в os.system() случае s 0 ), затем снова выключите его и скажите, что он не был запущен, или, если он вернул ошибку, скажите, что он уже запущен. По сути, мне нужно получить возвращаемое значение bash, которое я выполняю внутри applescript, и это возвращаемое значение переходит в остальную часть моего скрипта python. Это то, что у меня есть до сих пор:

 status = os.system('''
    osascript -e 'do shell script "sudo apachectl start" with administrator privileges'
''')

if (status == 0):
    os.system('''
        osascript -e 'do shell script "sudo apachectl stop" with administrator privileges'
    ''')
    statusText.config(state=NORMAL)
    statusText.insert(END, "Not Running")
    statusText.config(state=DISABLED, fg="red")
else:
    statusText.config(state=NORMAL)
    statusText.insert(END, "Running")
    statusText.config(state=DISABLED, fg="green")
  

Я намерен сделать это автономным приложением, поэтому мне нужны все встроенные модули.
Заранее благодарю вас!

Комментарии:

1. Я бы рекомендовал использовать более питонические средства, такие как subprocess() и почему бы не запросить apachectl status вместо запуска или остановки службы для получения результата?

2. @l’l’l на mac статус apachectl возвращает это: Go to http://localhost:80/server-status in the web browser of your choice. Note that mod_status must be enabled for this to work.

3. Ах, хорошо, это имеет больше смысла. Ну, я думаю, вы, вероятно, могли бы использовать grep ps , возможно, как ваш status , поскольку он выводит, есть ли активный pid или нет httpd … Из какого модуля получен statusText?

4. @l’l’l statusText — это текстовый виджет tkinter

5. @l’L’l что вы подразумеваете под grep? Извините, я не разбираюсь в bash