Разблокировать gnome-keyring из сеанса temp dbus

Я пытаюсь написать приложение на Python, которое может разблокировать gnome-keyring из текстовой системы (безголовый компьютер) и получить учетные данные. у меня есть gnome-keyring пакет установлен в этой машине.

В основном мое приложение будет:

  1. Начать новую сессию dbus
  2. Разблокируйте гном-брелок в этом сеансе dbus
  3. Извлеките учетные данные из набора ключей
  4. Уничтожить сессионный автобус dbus

Я пытаюсь следовать этому руководству: https://pypi.org/project/keyring/

Я пытался читать: Python DBUS SESSION_BUS - зависимость X11, но OP использует dbus-launch вместо dbus-run-session, Оригинальная справочная страница для dbus-launch говорит использовать 'dbus-run-session` для текстовых систем.

Если я начну новый сеанс dbus, используя подпроцесс python, как я могу выполнить шаг № 2 в том же сеансе dbus?

1 ответ

Вам также нужно будет создать вторую программу в вашем проекте под dbus-run-sessionили вам нужно будет использовать что-то кроме dbus-run-session запустить свой собственный сессионный автобус. dbus-run-session предназначен для запуска одной программы на собственной шине; как только эта программа завершается, шина отключается. Так что либо вам нужно предоставить вторую программу, которая выполняет шаги 2 и 3 из вашего плана, либо вам нужно более четко настроить и свернуть свою собственную dbus-daemon экземпляр из вашей программы верхнего уровня, копируя некоторые из поведения dbus-run-session,

Как правило, это будет включать:

  • Предоставление dbus-daemon файл конфигурации для использования.
  • Бег dbus-daemon --config-file=path/to/config --address=path/to/socket --nofork,
  • настройка DBUS_SESSION_BUS_ADDRESS=unix:path/to/socket в среде вашей программы, прежде чем делать что-либо с помощью связки ключей.
  • Делать все, что вам нужно с брелоком.
  • Завершение dbus-daemon подпроцесс.
Другие вопросы по тегам