Powiedz, że chcę programowo uzyskać nazwę interfejsu mojej karty Ethernet. To wydaje się działać:Czy można pobrać właściwość D-Bus bez wywoływania 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
Które zwraca:
method return sender=:1.5 -> dest=:1.135 reply_serial=2
variant string "eth0"
Czy istnieje jakiś sposób na wycinanie pośrednika org.freedesktop.DBus.Properties.Get
i odzyskać własność bardziej bezpośrednio? Niestety, nazywając go jako metoda nie działa:
dbus-send --print-reply \
--type=method_call \
--system \
--dest=org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.NetworkManager.Device.Interface
Powroty:
Error org.freedesktop.DBus.Error.UnknownMethod:
Method "Interface" with signature "" on interface
"org.freedesktop.NetworkManager.Device" doesn't exist
Pytam ponieważ konieczności wzywania org.freedesktop.DBus.Properties.Get
wygląda konieczności wezwać object.getProp("someproperty")
zamiast object.getSomeProperty()
w Python/Java/etc .
się wstyd że najlepsze narzędzie wiersza poleceń dbus jest dystrybuowane z qt, a nie dbus. – olejorgenb
Warto zauważyć, że wewnętrznie 'qdbus' * będzie * wywoływać' org.freedesktop.DBus.Properties.Get' lub 'org.freedesktop.DBus.Properties.GetAll' lub uzyskiwać właściwości z sygnałów z' org ' .freedesktop.DBus.ObjectManager'. Na poziomie protokołu jest to wymagane. –