我正在尝试制作一个脚本,以便在连接U盘时启动自定义脚本。
我发现很好的python脚本here但是当它调用getAllProperties()方法时,我得到一个异常:
错误:d bus.connection:d-bus信号的处理程序中出现异常:traceback
(最近的最后一次调用):文件
“/usr/lib/python2.7/site packages/dbus/connection.py”,第214行,in
也许你能处理你的信息
self._handler(*args,**kwargs)文件“./hal automount”,第31行,在设备中添加
属性=self.udi_to_设备(udi).getAllProperties()
文件“/Ur/Lb/Python 2.7/站点包/dBo/Pro x.Pyx.Py”,第68行,in
_呼叫__
返回自已.* PROXYY方法(*ARGs,**关键字)文件“/UR/LB/Python 2.7/站点包/DBOS/PROXIEX.PY”,第140行,in
_呼叫__
**关键字)文件“/usr/lib/python2.7/site packages/dbus/connection.py”,第630行,in
呼叫阻塞
消息,超时)dbusexception:org.freedesktop.dbus.error.accessdenied:拒绝发送消息,3
匹配的规则;type=“method\u call”,sender=“:1.39539”(uid=0 pid=9527
comm=“python)interface=(unset)”member=“getAllProperties”错误
name=(unset)请求的回复=0目的地=“:1.8”(uid=0 pid=3039
命令=“/usr/sbin/hald”)
操作系统:opensuse 11.4
我以前没有和dbus合作过,你能告诉我出什么事了吗?
谢谢。

最佳答案

由于访问策略,您的dbus方法调用失败。这可能是因为您在调用方法时没有指定任何接口。看起来像是您试图使用的脚本中的一个bug(应该始终通过接口调用dbus方法)。
尝试替换:

def udi_to_device(self, udi):
    return self.bus.get_object("org.freedesktop.Hal", udi)

使用:
def udi_to_device(self, udi):
    obj = self.bus.get_object("org.freedesktop.Hal", udi)
    return dbus.Interface(obj, dbus_interface='org.freedesktop.Hal.Device')

顺便说一句:哈尔现在已经过时了,你应该换成U盘。见http://www.freedesktop.org/wiki/Software/hal

关于python - DBus对象错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7951822/

10-12 20:48