Разблокировать gnome-keyring из сеанса temp dbus - PullRequest
0 голосов
/ 22 ноября 2018

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

По сути, мое приложение будет:

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

Я пытаюсь следовать этому руководству: https://pypi.org/project/keyring/#using-keyring-on-headless-linux-systems

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

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

1 Ответ

0 голосов
/ 22 ноября 2018

Вам либо потребуется создать в вашем проекте вторую программу с номером 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.
...