gpt4 book ai didi

dbus - 您可以在不调用 org.freedesktop.DBus.Properties.Get 的情况下检索 D-Bus 属性吗?

转载 作者:行者123 更新时间:2023-12-01 18:07:01 24 4
gpt4 key购买 nike

假设我想以编程方式获取以太网卡的接口(interface)名称。这似乎有效:

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并更直接地检索属性(property)?唉,将其作为方法调用是行不通的:

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/等中。

最佳答案

是的,如果您使用qdbus,您就可以做到这一点。我没有 NetworkManager,但这样的命令应该可以工作:

qdbus --system \
org.freedesktop.NetworkManager \
/org/freedesktop/NetworkManager/Devices/0 \
org.freedesktop.NetworkManager.Device.Interface

有多种命令行客户端可用于与 D-Bus 通信,其中一些比其他更方便。这是我认识的人的列表。

  • dbus-send(由 D-Bus 本身提供)
  • gdbus(由 GLib 提供)
  • qdbus(由 Qt 提供)
  • busctl(由systemd提供)

关于dbus - 您可以在不调用 org.freedesktop.DBus.Properties.Get 的情况下检索 D-Bus 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com