使用dbus-send的DBus内省对象树

时间:2015-01-02 14:32:43

标签: bash dbus

是否可以使用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会非常方便。

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。您可以要求总线列出所有服务名称,但无法询问所有接口,因此通常有两种情况:1)您知道接口名称并使用它们2)您从/开始并基于递归处理在Introspect()回复。 D-feet做(2)

答案 1 :(得分:2)

busctl 是一个方便的与 DBus 交互的工具

试试这个:

busctl tree