从 dbus 对象打印结果
Print result from dbus object
我想打印 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: No such method 'getProperties'
这真让人恼火。界面有点疯狂。
试试这个:
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')
现在,为什么文档示例代码不像文档中那样工作?这是一个很好的问题......但是上面的代码工作正常。
我想打印 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: No such method 'getProperties'
这真让人恼火。界面有点疯狂。
试试这个:
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')
现在,为什么文档示例代码不像文档中那样工作?这是一个很好的问题......但是上面的代码工作正常。