我试过运气:
dbus-send --system --print-reply \
--dest=org.freedesktop.UDisks \
/org/freedesktop/UIDisks/devices/md0 \
org.freedesktop.DBus.Properties.GetAll \
string:""
如果我使用d-free并发送"" 作为GetAll的参数,我得到一个很长的输出列表
尝试上面的代码只会出错:
Error org.freedesktop.DBus.Error.UnknownMethod: Method "GetAll" with signature "s" on
interface "org.freedesktop.DBus.Properties" doesn't exist
所以我做错了什么,但我不知道出了什么问题。我搜索了一个解决方案,但没有提出一个像样的解决方案。也许这是微不足道的,但我不知道......
答案 0 :(得分:2)
您需要将接口名称指定为GetAll的参数。这个例子对我有用(我有UDisks2而不是UDisks,但其他类似):
dbus-send --system --print-reply \
--dest=org.freedesktop.UDisks2 \
/org/freedesktop/UDisks2/block_devices/loop0
org.freedesktop.DBus.Properties.GetAll
string:"org.freedesktop.UDisks2.Block"
答案 1 :(得分:1)
我试过运气:
dbus-send --system --print-reply \ --dest=org.freedesktop.UDisks \ /org/freedesktop/UIDisks/devices/md0 \ org.freedesktop.DBus.Properties.GetAll \ string:""
对象路径中有拼写错误:您放置UIDisks
而不是UDisks
。修复应修复错误。
解决您对this answer关于一次获取所有属性的评论,D-Bus specification未指定GetAll
应接受其interface_name
参数的空字符串,因此如果任何服务做接受这个,那就是一个错误。相反,您必须为对象上的每个接口调用GetAll
一次。
最简单的方法是使用更高级别的D-Bus实用程序,例如gdbus
或D-Feet(正如您尝试的那样)。 dbus-send
旨在与D-Bus服务进行简单,低级别的互动。
$ gdbus introspect --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/block_devices/sda1 --only-properties
node /org/freedesktop/UDisks2/block_devices/sda1 {
interface org.freedesktop.UDisks2.Partition {
properties:
readonly u Number = 1;
…
};
interface org.freedesktop.UDisks2.Filesystem {
properties:
readonly aay MountPoints = [b'/boot/efi'];
};
…
}
答案 2 :(得分:1)
这些年来,我终于解决了这个问题,发现了一些东西。 是的,有时需要一些时间
dbus-send --system --print-reply \--dest=org.freedesktop.UDisks2 \
/org/freedesktop/UDisks2/block_devices/sda1 \
org.freedesktop.DBus.Properties.GetAll \
string:"org.freedesktop.UDisks2.Filesystem"
工作,至少可以获取文件系统接口的属性。
我又花了几个小时才弄清楚这些dbus发送的东西。
答案 3 :(得分:0)
错误org.freedesktop.DBus.Error.UnknownMethod:Method" GetAll"签名" s"上 interface" org.freedesktop.DBus.Properties"不存在
我有类似的问题,我运行d-feet,内省界面,并找出, 我不应该写#34; full / path / to / object",只是" / object", 在你的情况下不是" / org / freedesktop / UIDisks / devices / md0",但" / md0"。
如果没有帮助,请尝试将dbus调用中的所有参数与d-feet进行比较 显示,我确定你发现问题。