从dbus对象打印结果

时间:2019-04-10 08:51:37

标签: python dbus

我想从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'

1 个答案:

答案 0 :(得分: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')

现在,为什么文档示例代码无法按文档所述工作?这是一个很大的问题。但是上面的代码可以正常工作。