Вывести результат из объекта dbus - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу напечатать результат из 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 Ответ

1 голос
/ 15 мая 2019

Это было довольно обидно.Интерфейс немного сумасшедший.

Попробуйте:

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')

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

...