Предоставьте GPG ответы

Предоставьте GPG ответы

Я хочу сделать что-то вроде:

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

Для того, чтобы предоставить GPG ответы, которые были даны заранее.

Но это не работает. Есть идеи?

решение1

echo -e "trust\n5" | gpg --edit-key "Dor"не работает, так как gpgне читает ответы из stdin, а открывает их /dev/ttyнапрямую для чтения.

Это можно обойти с помощьюexpect, инструмент для автоматизации интерактивных приложений.

решение2

Как ответил Томас Найман, решение заключается в использовании expectили аналогичного инструмента.

К сожалению, expectможет быть сложным в изучении и использовании, и это существенная инвестиция времени и усилий, чтобы изучить язык, который можно использовать только для одной задачи. Вы можете обнаружить, что проще — и полезнее в долгосрочной перспективе — использовать Perl или Python, оба из которых имеют библиотеки, которые можно использовать для того же, что и expect.

Для Perl это будетОжидать.pm

Для Python взгляните наpожидать

Оба они, вероятно, уже упакованы для вашего дистрибутива Linux — например, в Debian это libexpect-perlи python-pexpect.

Кстати, хотя это и не имеет прямого отношения к вашему вопросу, стоит отметить, что в Perl также есть библиотеки/модули, разработанные специально для выполнения expectподобных вещей через сетевые соединения, например perl Net::SSHи Net::Telnetмодули. У Python есть похожие библиотеки.

Связанный контент