У меня есть сценарий, который должен быть запущен в 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». Я думал о том, чтобы разделить сценарий на два разных файла и просто импортировать другое, но я хотел бы знать, как это сделать тоже.
Это дает мне проблемы, я не уверен где и как правильно установить адрес. Если у кого-то есть понимание, я бы очень признателен.