【问题标题】:Print result from dbus object从 dbus 对象打印结果
【发布时间】:2019-05-15 09:29:25
【问题描述】:

我想从 dbus 打印结果。

在命令行中我运行这个:

busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.DBus.Properties

我得到了一些结果。

我尝试使用 python,但无法打印结果。

import dbus
bus = dbus.SystemBus()
eth0 = bus.get_object('org.freedesktop.NetworkManager',
                      '/org/freedesktop/NetworkManager/Devices/eth0')
eth0_dev_iface = dbus.Interface(eth0,
    dbus_interface='org.freedesktop.NetworkManager.Devices')
props = eth0_dev_iface.getProperties()

但我得到这个错误:

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: 没有这样的方法'getProperties'

【问题讨论】:

    标签: python dbus


    【解决方案1】:

    这非常令人恼火。界面有点疯狂。

    试试这个:

    import dbus
    bus = dbus.SystemBus()
    eth0 = bus.get_object('org.freedesktop.NetworkManager',
                          '/org/freedesktop/NetworkManager/Devices/eth0')
    
    # Here's where we change things
    eth0_dev_iface = dbus.Interface(eth0,
        dbus_interface='org.freedesktop.DBus.Properties')
    eth0_dev_iface.GetAll('org.freedesktop.NetworkManager.Devices')
    

    现在为什么文档示例代码没有按文档说明工作?这是一个很好的问题...但是上面的代码可以正常工作。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多