Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DBus对象错误_Python_Linux_Dbus_Opensuse - Fatal编程技术网

Python DBus对象错误

Python DBus对象错误,python,linux,dbus,opensuse,Python,Linux,Dbus,Opensuse,我正在尝试制作一个脚本,以便在usb棒连接时启动自定义脚本。 我发现了很好的python脚本,但当它调用GetAllProperties()方法时,我得到了一个异常: 错误:dbus。连接:D-Bus信号处理程序中出现异常:回溯 (最近一次调用上次):文件 “/usr/lib/python2.7/site packages/dbus/connection.py”,第214行,在 可能会处理消息 self.\u处理器(*args,**kwargs)文件“/hal automount”,第31行,在

我正在尝试制作一个脚本,以便在usb棒连接时启动自定义脚本。 我发现了很好的python脚本,但当它调用GetAllProperties()方法时,我得到了一个异常:

错误:dbus。连接:D-Bus信号处理程序中出现异常:
回溯 (最近一次调用上次):
文件 “/usr/lib/python2.7/site packages/dbus/connection.py”,第214行,在 可能会处理消息
self.\u处理器(*args,**kwargs)
文件“/hal automount”,第31行,在设备中添加
properties=self.udi_to_设备(udi).GetAllProperties()
文件“/usr/lib/python2.7/site packages/dbus/proxies.py”,第68行,在 __打电话给 返回self._proxy_method(*args,**关键字)
文件“/usr/lib/python2.7/site packages/dbus/proxies.py”,第140行,在 __打电话给 **关键词)
文件“/usr/lib/python2.7/site packages/dbus/connection.py”,第630行,在 呼叫阻塞
消息,超时)
dbuseException:org.freedesktop.DBus.Error.AccessDenied:拒绝发送消息,3 匹配规则;type=“方法调用”,sender=“:1.39539”(uid=0 pid=9527 comm=“python)interface=“(unset)”member=“getAllProperties”错误 name=“(unset)”请求的应答=0目的地=“:1.8”(uid=0 pid=3039 comm=“/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)
与:


顺便说一句:HAL现在已经过时了,您可能应该切换到UDisk。请参见

这看起来与我的问题相关-您能检查一下吗?
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')