Como eu uso o Keyring do GNOME com Python Keyring no ambiente virtual?

1

Eu escrevi um script Python que gostaria de executar em segundo plano no meu Raspberry Pi. O script usa o módulo Python Keyring ( link ), que é usado para acessar um back-end de chaveiro para fornecer senha entrada para o script.

Eu escrevi o script no OS X, para o qual Keyring faz uso do OS X Keychain. Mas em um Raspberry Pi sem cabeçalho que não usa X11 , algo como GNOME Keychain deve ser instalado para atuar como o back-end.

Eu li as instruções do Pypi (referenciadas abaixo), mas não estou familiarizado com D-Bus e como fazer tudo funcionar na prática. Alguém estaria disposto a fornecer um exemplo prático de como D-bus e GNOME Keyring podem ser manipulados por Raspbian , assumindo isto:

  • O script deve sempre ser executado em segundo plano enquanto o Raspberry estiver ligado e invocado via crontab .
  • O script deve ser executado em um ambiente virtualenv , que possui o Keyring módulo instalado.
  • O tratamento de GNOME Keyring / D-Bus session é tratado da forma mais automática possível e pode fornecer as entradas do conjunto de chaves para o script sem a entrada do usuário (por exemplo, carregado automaticamente quando o Raspberry é ligado ou o script executado).

link

Using Keyring on headless Linux systems

It is possible to use the SecretService backend on Linux systems without X11 server available (only D-Bus is required). To do that, you need the following:

Install the GNOME Keyring daemon. (Note: I have done this via apt-get).

Start a D-Bus session, e.g. run dbus-run-session -- sh and run the following commands inside that shell.

Run gnome-keyring-daemon with --unlock option. The description of that option says:

Read a password from stdin, and use it to unlock the login keyring or create it if the login keyring does not exist.

     

Quando esse comando for iniciado, insira sua senha em stdin e pressione    Ctrl + D (fim dos dados). Depois disso, o daemon vai bifurcar no fundo   (use a opção --foreground para evitar isso).

     

Agora você pode usar o backend SecretService do Keyring. Lembre-se de correr   sua aplicação na mesma sessão do D-Bus que o daemon.

    
por Winterflags 29.03.2016 / 21:46

1 resposta

2

Você ainda precisa seguir as instruções e obter o contexto necessário em funcionamento. Isso é feito normalmente ao efetuar login no shell gráfico, mas como você usa um sistema sem cabeçalho, é necessário criar o ambiente.

Isso significa que você faz o login (usando ssh ) e executa os programas a partir da linha de comando, conforme especificado em "Usando o Keyring em sistemas Linux sem cabeçalho" e então inicia seu próprio programa ou cria um script que executa todas essas ações.

Se o seu programa deve ser iniciado a partir do crontab, a segunda opção (criar um script que faça todas as coisas necessárias e depois iniciar seu programa em Python) é o caminho a ser seguido.

Por favor, note que o seu ambiente ao executar um script do cron é diferente, incluindo um PATH muito restrito onde os comandos são pesquisados.

A execução de um virtualenv é automática se o seu programa for instalado como um ponto de entrada de pacote (por exemplo, você fez /path/to/your/virtualenv/bin/python setup.py install ). Se você não transformou seu programa em um pacote, basta iniciá-lo como:

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

para realmente usar todos os pacotes instalados em seu virtualenv.

Você deve conseguir executar as etapas especificadas no seu programa python, mas isso se desvia da descrição (que pressupõe que você tenha um shell). Então, a menos que você tenha experiência nesses assuntos, eu ficaria com um script de shell que executa as etapas e chama seu programa python.

    
por 29.03.2016 / 22:35