如何从Python获得失败服务的systemctl结果?

如何从Python获得失败服务的systemctl结果?,python,systemd,Python,Systemd,如果systemd服务单元处于故障状态,systemctl状态将显示以下事实: # systemctl status myservice ● myservice.service - Important Crash Prone service (myservice) Loaded: loaded (/etc/systemd/system/myservice.service; enabled; vendor preset: disabled) Active

如果systemd服务单元处于故障状态,systemctl状态将显示以下事实:

    # systemctl status myservice
    ● myservice.service - Important Crash Prone service (myservice)
       Loaded: loaded (/etc/systemd/system/myservice.service; enabled; vendor preset: disabled)
       Active: failed (Result: start-limit) since Tue 2017-08-22 20:04:13 UTC; 3s ago
      Process: 31108 ExecStart=/bin/myservice (code=dumped, signal=ABRT)
     Main PID: 31108 (code=dumped, signal=ABRT)
我希望Python程序在不分叉
systemctl
并尝试解析输出的情况下获取“Result:start limit”字段。其他字段(例如,Loaded、Active)可从Python dbus库获得

例如,以下代码获取
ActiveState
属性,该属性由
systemctl
在“Active:”(上面输出中的“failed”一词)之后显示

“结果”值似乎不是其他输出的属性。

如果您查看处的文档,它解释了
结果是服务单元对象的一部分(
org.freedesktop.systemd1.Service

因此,我在您的代码中添加了以下内容:

if value == 'failed':
    result_prop = 'Result'
    result = myservice_proxy.Get('org.freedesktop.systemd1.Service',
                                 result_prop,
                                 dbus_interface='org.freedesktop.DBus.Properties')
    print(result)
现在它工作得很好

if value == 'failed':
    result_prop = 'Result'
    result = myservice_proxy.Get('org.freedesktop.systemd1.Service',
                                 result_prop,
                                 dbus_interface='org.freedesktop.DBus.Properties')
    print(result)