Feed GPG con respuestas

Deseo hacer algo como:

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

Con el fin de suministrar GPG con respuestas que se hicieron con anticipación.

Pero no funciona. ¿Alguna idea?

echo -e "trust\n5" | gpg --edit-key "Dor" echo -e "trust\n5" | gpg --edit-key "Dor" no funciona porque gpg no lee las respuestas de stdin , pero abre /dev/tty directamente para leer.

Esto se puede solucionar con expect , una herramienta para automatizar aplicaciones interactivas.

Como respondió Thomas Nyman, la solución es usar una herramienta expect o similar.

Desafortunadamente, expect puede ser difícil de aprender y usar, y es una inversión significativa en time y esfuerzo para aprender un idioma que se puede utilizar para una sola tarea. Puede que le resulte más fácil (y más útil a largo ploop) usar Perl o Python, que tienen bibliotecas que se pueden usar para hacer lo mismo que se expect .

Para Perl, eso sería Expect.pm

Para Python, eche un vistazo a pexpect

Ambos probablemente ya estén empaquetados para su distribución de Linux, por ejemplo, en Debian, son libexpect-perl y python-pexpect .

Por cierto, aunque no es específicamente relevante para su pregunta, vale la pena señalar que Perl también tiene bibliotecas / modules diseñados específicamente para hacer cosas expect través de conexiones de networking, por ejemplo, los modules Net::SSH y Net::Telnet perl. Python tiene bibliotecas similares.