
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 gpg
não lê as respostas do stdin
, mas abre /dev/tty
diretamente para leitura.
Isso pode ser contornado comexpect
, uma ferramenta para automatizar aplicativos interativos.
Responder2
Como respondeu Thomas Nyman, a solução é usar expect
uma ferramenta semelhante.
Infelizmente, expect
pode 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-perl
e 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 expect
coisas semelhantes em conexões de rede - por exemplo, perl Net::SSH
e Net::Telnet
módulos. Python possui bibliotecas semelhantes.