使用python编写脚本以验证apache状态

2024-04-25 04:30:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做一个脚本来检查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

Tags: in脚本true消息outputinitcheckstatus
1条回答
网友
1楼 · 发布于 2024-04-25 04:30:59

check_output引发异常当进程返回值不是0时,需要用try except语句包装调用

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 "

相关问题 更多 >