
Ich möchte so etwas tun wie:
echo -e "trust\n5" | gpg --edit-key "Dor"
Um GPG mit vorab gegebenen Antworten zu versorgen.
Aber es funktioniert nicht. Irgendeine Idee?
Antwort1
echo -e "trust\n5" | gpg --edit-key "Dor"
funktioniert nicht, da gpg
die Antworten nicht vorgelesen werden stdin
, sondern /dev/tty
direkt zum Lesen geöffnet werden.
Dies kann umgangen werden mitexpect
, ein Tool zur Automatisierung interaktiver Anwendungen.
Antwort2
Wie Thomas Nyman antwortete, besteht die Lösung darin, expect
ein ähnliches Tool zu verwenden.
Leider expect
kann es schwierig sein, zu lernen und zu verwenden, und es ist eine erhebliche Investition an Zeit und Mühe, eine Sprache zu lernen, die nur für eine Aufgabe verwendet werden kann. Möglicherweise finden Sie es einfacher – und auf lange Sicht nützlicher –, Perl oder Python zu verwenden, da beide Bibliotheken haben, mit denen Sie dasselbe tun können wie expect
.
Für Perl wäre dasErwarten.pm
Für Python schauen Sie sich anerwarte
Beide sind wahrscheinlich bereits für Ihre Linux-Distribution gepackt – in Debian sind sie beispielsweise libexpect-perl
und python-pexpect
.
Übrigens, auch wenn es für Ihre Frage nicht unbedingt relevant ist, ist es erwähnenswert, dass Perl auch Bibliotheken/Module hat, die speziell dafür entwickelt wurden, expect
ähnliche Dinge über Netzwerkverbindungen zu tun – z. B. Perl Net::SSH
und Net::Telnet
Module. Python hat ähnliche Bibliotheken.