是否可以使用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会非常方便。
答案 0 :(得分:2)
不,这是不可能的。您可以要求总线列出所有服务名称,但无法询问所有接口,因此通常有两种情况:1)您知道接口名称并使用它们2)您从/
开始并基于递归处理在Introspect()
回复。 D-feet做(2)
答案 1 :(得分:2)
busctl
是一个方便的与 DBus 交互的工具
试试这个:
busctl tree