#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