使用 dbus-send 的 DBus 自省对象树
DBus introspection object tree using dbus-send
是否可以使用 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 会非常方便。
不,这是不可能的。你可以要求总线列出所有的服务名称,但是没有办法要求所有的接口,所以通常有两种情况:1)你知道接口名称并使用它们 2)你从 /
开始并根据递归处理在 Introspect()
个回复中。 D 英尺 (2)
busctl
是与 DBus
交互的便捷工具
试一试:
busctl tree
是否可以使用 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 会非常方便。
不,这是不可能的。你可以要求总线列出所有的服务名称,但是没有办法要求所有的接口,所以通常有两种情况:1)你知道接口名称并使用它们 2)你从 /
开始并根据递归处理在 Introspect()
个回复中。 D 英尺 (2)
busctl
是与 DBus
试一试:
busctl tree