Печать результата из объекта dbus

#python #dbus

#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.исключения.Исключение DBusException: org.freedesktop.DBus.Ошибка.Неизвестный метод: нет такого метода ‘GetProperties’

Ответ №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')
  

Теперь, почему код примера документации не работает так, как задокументировано? Это отличный вопрос… Приведенный выше код, однако, работает нормально.