Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要使用此脚本来检查服务状态吗_Python_Raspberry Pi_Gpio_Raspberry Pi4 - Fatal编程技术网

Python 需要使用此脚本来检查服务状态吗

Python 需要使用此脚本来检查服务状态吗,python,raspberry-pi,gpio,raspberry-pi4,Python,Raspberry Pi,Gpio,Raspberry Pi4,对不起,我是编程初学者。我遇到了一个问题,我无法以我预期的方式完成脚本 预期:此python脚本将识别服务[Webmin]当前是否处于活动状态,然后打开与GPIO.pinout对应的指示灯。 (如果服务处于活动状态,则指示灯将点亮,否则将关闭) 现在的问题:当我运行脚本时,脚本将在命令行界面中不断返回“active”,并且指示灯不会亮起。我试图将os.system('systemctl是活动的webmin')修改为os.system('systemctl是活动的——安静的webmin')使输出静

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

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

现在的问题:当我运行脚本时,脚本将在命令行界面中不断返回“active”,并且指示灯不会亮起。我试图将
os.system('systemctl是活动的webmin')
修改为
os.system('systemctl是活动的——安静的webmin')
使输出静音,但灯仍然不亮。

请帮我检查一下是否有些东西编码错误,我试着用谷歌搜索类似的信息和解决方案,但几乎没有帮到我。先谢谢你

#/usr/bin/env python
将RPi.GPIO导入为GPIO
导入操作系统
导入时间
绿色=26
黄色=19
红色=13
#Pin设置:
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(绿色,GPIO.OUT)
GPIO.setup(黄色,GPIO.OUT)
GPIO.setup(红色,GPIO.OUT)
尽管如此:
check=os.system('systemctl是活动的webmin')
匹配=(“活动”)
如果检查==匹配:
GPIO.output(红色,真)
时间。睡眠(1)
其他:
GPIO.output(红色,假)
GPIO.output(黄色,假)
GPIO.output(绿色,假)
使用
os.system()
只返回命令的错误代码,而不是命令的结果。如中所述,您应该研究如何使用来运行OS命令并检索它们的结果

导入子流程
check=subprocess.run([“systemctl”、“处于活动状态”、“webmin”],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
如果check.stdout==b“active”:#您的结果可能以换行符结尾:b“active\n”
打印(“Webmin处于活动状态!”)

os.system('systemctl为活动webmin')返回什么?它返回
active
您是否检查过是否确实要在车载使用BCM?关于输出,没有使用真/假,你试过1/0吗?@PauloPereira,对不起,我是初学者,这是我第一次听说GPIO板模式。谢谢你的帮助!但我的覆盆子皮好像有点不对劲。我复制了您的代码,并将其与ssh连接粘贴到我的Pi。我使用
python3xx.py
命令执行脚本,但它没有返回任何结果。您是否尝试检查从子流程得到的结果
print(check.stdout)
运行子流程后,如果没有任何内容,则
print(check.stderr)
以确保在正常运行时不会发生错误,我按照你的指示做了,这是结果。这是脚本的另一个输出,好的,下面是后续内容。似乎
print(check.stdout)
的输出是
b'active\n'
。如果check.stdout==b“活动”:必须是
如果check.stdout==b“活动”
才能工作。我不明白为什么缺少
\n
将是致命的。但是仍然非常感谢@Oliver.R,如果不是你,我不会知道子流程模块。谢谢换行符在我们的测试中是必要的,因为它是输出的一部分,我们正在进行直接比较。如果b在check中为active,则可以将此设置为
。stdout:
仅测试输出是否包含单词
active
,但是这可能更容易出错(例如,如果脚本返回“active failed:(”),则为真。很高兴我能提供帮助!