Ошибка объекта DBus - PullRequest
       28

Ошибка объекта DBus

1 голос
/ 31 октября 2011

Я пытаюсь создать скрипт для запуска моего собственного скрипта, когда моя USB-флешка подключена.Я нашел хороший скрипт Python здесь , но когда он вызывает GetAllProperties () метод, я получаю исключение:

ОШИБКА: dbus.connection: Исключение в обработчике дляСигнал D-Bus:
Трассировка (последний последний вызов):
Файл "/usr/lib/python2.7/site-packages/dbus/connection.py", строка 214, в Maybe_handle_message
self._handler (* args, ** kwargs)
Файл "./hal-automount", строка 31, в device_added
properties = self.udi_to_device (udi) .GetAllProperties ()
Файл "/ usr /lib / python2.7 / site-packages / dbus / proxies.py ", строка 68, в __call __
вернуть self._proxy_method (* аргументы, ** ключевые слова)
файл" /usr/lib/python2.7/site-packages/dbus/proxies.py ", строка 140, в __call __
** ключевые слова)
Файл" /usr/lib/python2.7/site-packages/dbus/connection.py ", строка630, в call_blocking
сообщение, время ожидания)
DBusException: org.freedesktop.DBus.Error.AccessDenied: отклоненное отправленное сообщение, 3 соответствующих правила;type = "method_call", sender = ": 1.39539" (uid = 0 pid = 9527 comm = "python) interface =" (unset) "member =" getAllProperties "error name =" (unset) "required_reply = 0 destination =": 1.8 "(uid = 0 pid = 3039 comm =" / usr / sbin / hald))

ОС: openSuSE 11.4

Я раньше не работал с DBus, могувы подсказываете мне, что не так?Спасибо.

1 Ответ

2 голосов
/ 31 октября 2011

Ваш вызов метода DBus не выполнен из-за политики доступа. Вероятно, потому, что вы вызвали метод без указания какого-либо интерфейса. Похоже, ошибка в скрипте, который вы пытались использовать (методы 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')

Кстати: HAL теперь устарел, вам, вероятно, стоит перейти на udisks. Смотри http://www.freedesktop.org/wiki/Software/hal

...