#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')
Теперь, почему код примера документации не работает так, как задокументировано? Это отличный вопрос… Приведенный выше код, однако, работает нормально.