需要帮助使用此脚本来检查服务状态

Need a hand with this script to check service status

对不起,我是编程初学者。我遇到了无法按照预期方式完成脚本的问题。

预期:此python脚本将识别服务[Webmin]当前是否处于活动状态,然后打开对应于GPIO.pinout的灯。 (如果服务处于活动状态,则灯将亮起,否则将关闭)

现在的问题:当我运行脚本时,脚本会在命令行界面中一直返回"active"并且灯不亮。我试图将 os.system('systemctl is-active webmin') 修改为 os.system('systemctl is-active --quiet webmin') 以使输出静音,但灯仍然无法工作。

请帮我检查一下是否编码有误,我尝试Google它以获取类似的信息和解决方案,但对我帮助不大。提前谢谢你。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import os
import time

GREEN = 26
YELLOW = 19
RED = 13

# Pin Setup:
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(GREEN, GPIO.OUT)
GPIO.setup(YELLOW, GPIO.OUT)
GPIO.setup(RED, GPIO.OUT)


while True:

        check = os.system('systemctl is-active webmin')
        match = ('active')
        if check == match:
                GPIO.output(RED, True)
                time.sleep (1)

        else:
                GPIO.output(RED, False)
                GPIO.output(YELLOW, False)
                GPIO.output(GREEN, False)

使用os.system()只会返回命令的错误代码,而不是命令的结果。如 the documentation for os.system(), you should look into using the subprocess module 中所述,用于 运行 OS 命令并检索它们的结果。

import subprocess
check = subprocess.run(["systemctl", "is-active", "webmin"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if check.stdout == b"active":  # Your result may end in a newline: b"active\n"
    print("Webmin is active!")