
Deseo hacer algo como:
echo -e "trust\n5" | gpg --edit-key "Dor"
Para proporcionar a GPG las respuestas que se dieron de antemano.
Pero no funciona. ¿Alguna idea?
Respuesta1
echo -e "trust\n5" | gpg --edit-key "Dor"
no funciona porque gpg
no lee las respuestas stdin
, pero se abre /dev/tty
directamente para leer.
Esto se puede solucionar conexpect
, una herramienta para automatizar aplicaciones interactivas.
Respuesta2
Como respondió Thomas Nyman, la solución es utilizar expect
una herramienta similar.
Desafortunadamente, expect
puede ser difícil de aprender y utilizar, y supone una importante inversión de tiempo y esfuerzo aprender un idioma que se pueda utilizar para una sola tarea. Puede que le resulte más fácil (y más útil a largo plazo) utilizar Perl o Python, los cuales tienen bibliotecas que pueden usarse para hacer lo mismo que expect
.
Para Perl, eso seríaEsperar.pm
Para Python, eche un vistazo aesperar
Probablemente ambos ya estén empaquetados para su distribución de Linux; por ejemplo, en Debian, son libexpect-perl
y python-pexpect
.
Por cierto, si bien no es específicamente relevante para su pregunta, vale la pena señalar que Perl también tiene bibliotecas/módulos diseñados específicamente para hacer expect
cosas similares a través de conexiones de red, por ejemplo, módulos Net::SSH
y Perl Net::Telnet
. Python tiene bibliotecas similares.