イーサネット カードのインターフェイス名をプログラムで取得したいとします。これはうまくいくようです:
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
呼び出す必要があるのは、Python/Java/etcではなくorg.freedesktop.DBus.Properties.Get
a を呼び出す必要があるように見えるため です。object.getProp("someproperty")
object.getSomeProperty()