需要帮助使用此脚本来检查服务状态
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!")
对不起,我是编程初学者。我遇到了无法按照预期方式完成脚本的问题。
预期:此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!")