¿Cómo uso el llavero de GNOME con el llavero de Python en el entorno virtual?

He escrito un script de Python que me gustaría ejecutar en segundo plano en mi Raspberry Pi. La secuencia de commands hace uso del module de Python Keyring ( enlace ), que se utiliza para acceder a un back-end de keyring para proporcionar la input de contraseña a la secuencia de commands.

Escribí el guión en OS X, para lo cual Keyring usa OS X Keychain. Pero en un Raspberry Pi sin cabeza que no usa X11 , debe instalarse algo así como GNOME Keychain para que funcione como el back-end.

He leído las instrucciones de Pypi (a las que se hace reference a continuación), pero no estoy familiarizado con D-Bus y cómo hacer que todo funcione en la práctica. ¿Alguien estaría dispuesto a proporcionar un ejemplo práctico de cómo D-bus y el GNOME Keyring pueden ser manejados por Raspbian , asumiendo esto:

  • La secuencia de commands siempre debe ejecutarse en segundo plano, siempre que la Raspberry esté encendida, y se invoca a través de crontab .
  • La secuencia de commands debe ejecutarse desde un entorno virtualenv , que tiene instalado el module de Keyring .
  • El event handling la D-Bus session GNOME Keyring / D-Bus session GNOME Keyring se maneja de la manera más automática posible y puede proporcionar las inputs del set de keys al script sin intervención del usuario (por ejemplo, cargarse automáticamente cuando Raspberry está encendido o ejecutarse).

Soy muy novato en lo que respecta a estas cosas, por lo que cualquier ayuda sería muy apreciada.


https://pypi.python.org/pypi/keyring#using-keyring-on-headless-linux-systems

Usando Keyring en sistemas Linux sin cabeza

Es posible utilizar el backend SecretService en sistemas Linux sin el server X11 disponible (solo se requiere D-Bus). Para hacer eso, necesitas lo siguiente:

Instale el daemon de Keyring de GNOME. (Nota: he hecho esto a través de apt-get ).

Inicie una session de D-Bus, por ejemplo, ejecute dbus-run-session -- sh y ejecute los siguientes commands dentro de ese shell.

Ejecute gnome-keyring-daemon con la opción --unlock . La descripción de esa opción dice:

Lea una contraseña de stdin y úsela para desbloquear el set de keys de inicio de session o crearlo si el set de keys de inicio de session no existe.

Cuando se inicia ese command, ingrese su contraseña en stdin y presione Ctrl + D (fin de los datos). Después de eso, el daemon se bifurca en el background (use la opción --foreground para evitar eso).

Ahora puede usar el backend SecretService de Keyring. Recuerde ejecutar su aplicación en la misma session de D-Bus que el daemon.

Aún debe seguir las instrucciones y poner en marcha el context requerido. Esto normalmente se hace al iniciar session en el shell gráfico, pero como usa un sistema sin cabeza, debe crear el entorno.

Eso significa que inicie session (usando ssh ) y ejecute los progtwigs desde la command-line como se especifica en "Uso de Keyring en sistemas Linux sin cabeza" y luego inicie su propio progtwig o realice un script que realice todas esas acciones.

Si su progtwig se va a iniciar desde crontab, la segunda opción (hacer un script que haga todas las cosas necesarias y luego iniciar su progtwig Python) es el path a seguir.

Tenga en count que su entorno cuando ejecuta una secuencia de commands desde cron es diferente, incluida una RUTA muy restringida donde se buscan los commands.

Ejecutar desde un virtualenv es automático si su progtwig está instalado como un punto de input del package (es decir, lo hizo /path/to/your/virtualenv/bin/python setup.py install ). Si no convirtió su progtwig en un package, basta con iniciarlo como sigue:

 /path/to/your/virtualenv/bin/python /path/to/your/main/python/prog.py 

para usar realmente todos los packages instalados en su virtualenv.

Debería poder hacer los pasos especificados desde su progtwig python, pero esto se desvía de la descripción (que supone que tiene un shell). Así que a less que tenga experiencia en esos asuntos, me quedaré con hacer un guión de shell que haga los pasos, y luego llame a su progtwig de Python.