скрипт с питоном для проверки статуса apache - PullRequest
1 голос
/ 20 сентября 2019

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

Это для сервера linux, просто для запуска apache, но я новичок в этом

    services = ['apache2']
    for service in services:
            status = subprocess.check_output("/etc/init.d/"+service+" status", shell=True)
            if ("is stopped" in status):
                    print service + "  - Stopped"
                    print service + "  - Trying to start"
                    service_start = subprocess.check_output("/etc/init.d/"+service+" start", shell=True)
            else:
                    print service + "  - Running "

Сообщение об ошибке:

status = subprocess.check_output("/etc/init.d/"+service+" status", shell=True)
File "/usr/lib/python2.7/subprocess.py", line 223, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '/etc/init.d/apache2 status' returned non-zero exit status 3

1 Ответ

0 голосов
/ 21 сентября 2019

check_output вызывает исключение, когда возвращаемое значение процесса отличается от 0, вам нужно обернуть вызов попыткой, кроме оператора

import subprocess

services = ['apache2']
for service in services:
    try:
        status = subprocess.check_output("/etc/init.d/"+service+" status", shell=True)
    except subprocess.CalledProcessError as e:
        status = "is stopped"

        if ("is stopped" in status):
                print service + "  - Stopped"
                print service + "  - Trying to start"
                service_start = subprocess.check_output("/etc/init.d/"+service+" start", shell=True)
        else:
                print service + "  - Running "
...