Feed GPG com respostas

2

Eu gostaria de fazer algo como:

echo -e "trust\n5" | gpg --edit-key "Dor"

Para fornecer ao GPG as respostas que foram feitas com antecedência.

Mas isso não funciona. Alguma idéia?

    
por Dor 22.09.2013 / 13:40

2 respostas

3

echo -e "trust\n5" | gpg --edit-key "Dor" não funciona porque gpg não lê as respostas de stdin , mas abre /dev/tty diretamente para leitura.

Isso pode ser contornado com a expect , uma ferramenta para automatizar aplicativos interativos.

    
por 22.09.2013 / 14:29
2

Como Thomas Nyman respondeu, a solução é usar expect ou ferramenta semelhante.

Infelizmente, expect pode ser difícil de aprender e usar, e é um investimento significativo em tempo e esforço aprender uma linguagem que seja utilizável apenas para uma tarefa. Você pode achar mais fácil - e mais útil a longo prazo - usar Perl ou Python, ambos com bibliotecas que podem ser usadas para fazer a mesma coisa que expect .

Para o perl, isso seria Expect.pm

Para Python, dê uma olhada em pexpect

Ambos provavelmente já estão empacotados para sua distribuição Linux - por exemplo, no debian, eles são libexpect-perl e python-pexpect .

BTW, embora não seja especificamente relevante para a sua pergunta, vale a pena notar que o Perl também possui bibliotecas / módulos projetados especificamente para fazer expect - coisas semelhantes em conexões de rede - por exemplo, Net::SSH e Net::Telnet dos módulos do perl. Python tem bibliotecas semelhantes.

    
por 23.09.2013 / 03:59

Tags