监控“故障”服务

2024-06-16 10:53:57 发布

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

我正在开发一个脚本,它监视一个服务是否出现故障,并根据是否存在故障启动另一个不同的操作。在

我需要一个python脚本来监视python程序“monitor services”的输出,并解析输出搜索是否出现“failure”。如果出现错误,则返回30秒的错误值。在

“监控服务”返回的示例输出:

{Device} [/device/xxx] Networks = dbus.Array([dbus.ObjectPath('/device/xxx/xxx'), dbus.ObjectPath('/device/00242b2e41b6/hidden')], signature=dbus.Signature('o'), variant_level=1)
{Service} [/profile/default/wifi_xxx_managed_wep] State = association
{Profile} [/profile/default] Services = dbus.Array([dbus.ObjectPath('/profile/default/wifi_xxx_managed_wep'), dbus.ObjectPath('/profile/default/wifi_xxx_managed_rsn')], signature=dbus.Signature('o'), variant_level=1)
{Manager} [/] Services = dbus.Array([dbus.ObjectPath('/profile/default/wifi_xxx_managed_wep'), dbus.ObjectPath('/profile/default/wifi_xxx_managed_rsn')], signature=dbus.Signature('o'), variant_level=1)
{Service} [/profile/default/wifi_xxx_managed_wep] **failure**
{Service} [/profile/default/wifi_xxx_managed_wep] State = idle

任何帮助都将不胜感激。在

[编辑]触发脚本的操作在30秒左右可能会发生故障,因此要求脚本在30秒后终止。[/编辑]


Tags: 脚本defaultdeviceprofilearraymanagedwifixxx
1条回答
网友
1楼 · 发布于 2024-06-16 10:53:57
#!/usr/bin/python
from subprocess import Popen, PIPE
import sys

data = Popen(["monitor-services"], stdout=PIPE).communicate()[0]

sys.exit("failure" in data)

这可以做你想做的一切,除了30秒的等待(我不明白)。注意,根据shell约定,如果找不到失败,则返回0;如果找到,则返回1(即0表示成功,非零表示失败)。在

相关问题 更多 >