从临时dbus会话中解锁gnome-keyring

时间:2018-11-22 00:45:34

标签: python subprocess dbus python-keyring gnome-keyring-daemon

我正在尝试编写一个 python 应用程序,该应用程序可以从纯文本系统(无头计算机)解锁gnome-keyring并检索凭据。我在此计算机上安装了gnome-keyring软件包。

基本上,我的应用程序将:

  1. 开始新的dbus会话
  2. 在该dbus会话中解锁gnome密钥
  3. 从密匙环中提取凭证
  4. 销毁dbus会话总线

我正在尝试遵循本教程:https://pypi.org/project/keyring/#using-keyring-on-headless-linux-systems

我尝试阅读:Python DBUS SESSION_BUS - X11 dependency,但是OP使用dbus-launch而不是dbus-run-sessiondbus-launch的原始手册页说要对纯文本系统使用'dbus-run-session`。

如果我使用python的子进程启动新的dbus会话,如何在同一dbus会话中运行第2步?

1 个答案:

答案 0 :(得分:0)

您要么需要在项目中的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子流程。