Alimente a GPG con respuestas

Alimente a GPG con respuestas

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 gpgno lee las respuestas stdin, pero se abre /dev/ttydirectamente para leer.

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

Respuesta2

Como respondió Thomas Nyman, la solución es utilizar expectuna herramienta similar.

Desafortunadamente, expectpuede 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-perly 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 expectcosas similares a través de conexiones de red, por ejemplo, módulos Net::SSHy Perl Net::Telnet. Python tiene bibliotecas similares.

información relacionada