dbus --- dbus-send、dbus-monitor工具、标准接口

dbus-send

功能

  • 调用指定程序的方法
  • 向指定程序发送信号

dbus-send的基本语法

dbus-send --system|--session --dest=destination --type=method_call --print-reply /path/to/object interface.method [arg1 arg2 ...]
  • --system 或 --session:指定使用系统总线还是会话总线。系统总线用于系统级服务,而会话总线用于用户会话中的服务。
  • --dest=destination:指定目标服务的名称,也称well-known Name
  • --type=method_call:指定消息类型为方法调用;signal表示发送信号
  • --print-reply:如果服务响应了消息,打印响应消息;也可以写--print-reply=literal,,literal会把所有的标点和转义符号去掉
  • /path/to/object:目标对象的路径。
  • interface.method:要调用的接口.方法。
  • [arg1 arg2 ...]:传递给方法的参数(可选)。

示例

使用dbus-send控制屏幕保护程序

假设你想使用dbus-send来锁定屏幕(这通常通过调用屏幕保护程序的服务来完成)。你可以使用以下命令:

dbus-send --session --print-reply --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock

返回

method return time=1720419947.196079 sender=:1.85 -> destination=:1.112 serial=28 reply_serial=2

标准接口

标准接口可以在DBus-Spec中找到,可以使用dbus提供的标准接口进行迭代查询,查询到每个的服务名--->obj路径--->每个方法的输入输出参数。

查询系统总线所有服务名称

dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ListNames

 返回

method return time=1689984075.048033 sender=org.freedesktop.DBus -> destination=:1.3 serial=3 reply_serial=2
   array [
      string "org.freedesktop.DBus"
      string ":1.3"
      string ":1.0"
      string "org.bluez"
   ]

查询服务 org.bluez 的所有对象的所有接口及其属性值(方法和信号没列出)

dbus-send --system --print-reply --type=method_call --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects

查询对象 org/bluez 的所有接口的方法、属性和信号的信息

dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez org.freedesktop.DBus.Introspectable.Introspect

dbus-monitor

基本语法

dbus-monitor 
        [--system | --session | --address ADDRESS] 
        [--profile | --monitor | --pcap | --binary] // 设置输出格式
        [watch expressions]

监视接口 org.bluez.Adapter1 的方法调用

root@rk3308h-buildroot:/# dbus-monitor --profile --system "type='method_call',interface='org.bluez.Adapter1'"                                 
#type timestamp serial sender destination path interface member # in_reply_to sig 1689986806.605417 2 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired sig 1689986806.605524 4 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameLost mc 1689986810.994514 2 :1.17 org.bluez /org/bluez/hci0 org.bluez.Adapter1 StartDiscovery

 

posted @ 2024-07-16 10:30  流水灯  阅读(17)  评论(0编辑  收藏  举报