Скажем, я хочу программно получить имя интерфейса моей карты ethernet. Это похоже на работу:Вы можете получить свойство D-Bus без вызова org.freedesktop.DBus.Properties.Get?
dbus-send --print-reply \
--type=method_call \
--system \
--dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.DBus.Properties.Get \
string:org.freedesktop.NetworkManager.Device \
string:Interface
Который возвращает:
method return sender=:1.5 -> dest=:1.135 reply_serial=2
variant string "eth0"
Есть ли какой-нибудь способ вырезания посредника org.freedesktop.DBus.Properties.Get
и получить собственность более непосредственно? Увы, называя его как метод не работает:
dbus-send --print-reply \
--type=method_call \
--system \
--dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.NetworkManager.Device.Interface
Возвращает:
Error org.freedesktop.DBus.Error.UnknownMethod:
Method "Interface" with signature "" on interface
"org.freedesktop.NetworkManager.Device" doesn't exist
Я спрашиваю, потому что, чтобы звонить org.freedesktop.DBus.Properties.Get
выглядит как того, чтобы назвать object.getProp("someproperty")
вместо object.getSomeProperty()
в Python/Java/и т.д. ,
Это позор что лучший инструмент командной строки dbus распределяется с qt, а не dbus. – olejorgenb
Стоит отметить, что внутренне 'qdbus' * будет * вызывать' org.freedesktop.DBus.Properties.Get' или 'org.freedesktop.DBus.Properties.GetAll' или получать свойства от сигналов от' org .freedesktop.DBus.ObjectManager'. На уровне протокола это требование. –