Alimente o GPG com respostas

Alimente o GPG com respostas

Desejo fazer algo como:

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

Para fornecer ao GPG respostas que foram feitas antecipadamente.

Mas não funciona. Qualquer ideia?

Responder1

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

Isso pode ser contornado comexpect, uma ferramenta para automatizar aplicativos interativos.

Responder2

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

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

Para perl, isso seriaEspere.pm

Para Python, dê uma olhada emexpectativa

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

A propósito, embora não seja especificamente relevante para sua pergunta, vale a pena notar que Perl também possui bibliotecas/módulos projetados especificamente para fazer expectcoisas semelhantes em conexões de rede - por exemplo, perl Net::SSHe Net::Telnetmódulos. Python possui bibliotecas semelhantes.

informação relacionada