我想做这样的事情:
echo -e "trust\n5" | gpg --edit-key "Dor"
为了向 GPG 提供提前做出的答案。
但这不起作用。任何想法?
答案1
echo -e "trust\n5" | gpg --edit-key "Dor"
不起作用,因为gpg
不读取 的答案stdin
,而是/dev/tty
直接打开进行阅读。
这可以解决expect
,一种用于自动化交互式应用程序的工具。
答案2
正如 Thomas Nyman 回答的那样,解决方案是使用expect
或类似的工具。
不幸的是,expect
它可能很难学习和使用,并且学习一门只能用于一项任务的语言需要投入大量的时间和精力。您可能会发现使用 Perl 或 Python 更容易(从长远来看也更有用),它们都具有可用于执行与expect
.
对于 Perl 来说,那就是预计下午
对于 Python,请查看预期
这两个版本可能已经为您的 Linux 发行版打包了 - 例如,在 debian 中,它们是libexpect-perl
和python-pexpect
。
顺便说一句,虽然它与您的问题没有特别相关,但值得注意的是 Perl 也有专门为expect
通过网络连接执行类似操作而设计的库/模块 - 例如 perlNet::SSH
和Net::Telnet
模块。 Python 有类似的库。