Настройка корневой сессии и сеанса пользователя на ту же шину?

У меня есть сценарий, который должен быть запущен в root, с привязками к dbus.

DBUS_SESSION_BUS_ADDRESS = 'address set under .dbus file ...'

class NewApp(dbus.service.Object):

    def __init__(self):
        busname = dbus.service.BusName('org.newapp', dbus.SessionBus(mainloop=DBusGMainLoop()))
        dbus.service.Object.__init__(self, busname, '/org/newapp')

    @dbus.service.method('org.newapp', out_signature='s')
    def do_stuff(self):
        return 'stuff'

if __name__ == '__main__':
    na = NewApp
    na()
    gobject.MainLoop().run()

Где do_stuff имеет код, который должен иметь доступ к root. Я обнаружил, что при запуске программы под root это создает отдельный сеанс dbus, и мне нужно будет установить «DBUS_SESSION_BUS_ADDRESS». Я думал о том, чтобы разделить сценарий на два разных файла и просто импортировать другое, но я хотел бы знать, как это сделать тоже.

Это дает мне проблемы, я не уверен где и как правильно установить адрес. Если у кого-то есть понимание, я бы очень признателен.

1
задан 24 December 2012 в 07:36

0 ответов

Другие вопросы по тегам:

Похожие вопросы: