使用 dbus-send 的 DBus 自省对象树
Posted
技术标签:
【中文标题】使用 dbus-send 的 DBus 自省对象树【英文标题】:DBus introspection object tree using dbus-send 【发布时间】:2015-02-28 21:07:25 【问题描述】:是否可以使用 dbus-send 收集 DBus 连接名称的完整对象树?
目前,我能够执行对所需目的地的多次调用,指定方法“org.freedesktop.DBus.Introspectable.Introspect”并第一次使用“/”作为路径,而不是检索内部节点并执行新的呼吁。
例如:
$ dbus-send --session --print-reply --reply-timeout=2000 --type=method_call --dest=org.gnome.Bluetooth.applet / org.freedesktop.DBus.Introspectable.Introspect
gives nodes Factory and org. So I proceed with the calls:
$ dbus-send --session --print-reply --reply-timeout=2000 --type=method_call --dest=org.gnome.Bluetooth.applet /Factory org.freedesktop.DBus.Introspectable.Introspect
$ dbus-send --session --print-reply --reply-timeout=2000 --type=method_call --dest=org.gnome.Bluetooth.applet /org org.freedesktop.DBus.Introspectable.Introspect
and so on...
我想立即检索完整的树。
我知道像 d-feet 这样的工具可以做到这一点,但我需要一个 cli 界面,dbus-send 会非常方便。
【问题讨论】:
我找到了一个可能的“一次性解决方案”,至少满足我的需要:gdbus introspect --session --dest org.gnome.Bluetooth.applet --object-path / --recurse - -xml 【参考方案1】:不,这是不可能的。可以要求bus列出所有的服务名,但是没有办法要求所有的接口,所以通常有两种情况:1)知道接口名并使用2)从/
开始,基于@递归处理987654322@ 回复。 D-foot (2)
【讨论】:
【参考方案2】:busctl
是与 DBus 交互的便捷工具
试试这个:
busctl tree
【讨论】:
以上是关于使用 dbus-send 的 DBus 自省对象树的主要内容,如果未能解决你的问题,请参考以下文章