Bash脚本键盘输入

时间:2010-04-07 12:32:22

标签: bash shell

我正在创建一个用于生成证书的bash脚本。创建证书的openssl命令要求输入键盘。这是每次相同的键序列:七次[ENTER]后跟两次['y'+ ENTER]。我该如何以编程方式执行此操作?

更新

我能够使用命令行参数减少消除所需的键盘输入:

  • -config FILE指定配置文件
  • -passin PWD-passout PWD指定密码

有关详细信息,请查看my experiments。这个网址可以通过颠覆来结账。

4 个答案:

答案 0 :(得分:5)

模拟用户互动的一种方法是expect

使用OpenSSL,您可以编写一个配置文件,该文件不需要任何输入来执行您要执行的任务。 (见man 5ssl config

有关如何编写opennssl脚本的好例子,请参阅CACerts CSRGenerator script

答案 1 :(得分:1)

由于它要求键盘输入,只需给它一些东西来阅读。

我认为yes | your_script可以正常工作,否则您只需将以下序列写入其输入:

\n\n\n\n\n\n\ny\ny\n

答案 2 :(得分:0)

Expect非常擅长这种事情。其他语言可以让你通过他们的popen风格的设施(远不那么方便)。

你可能能够像@tusbar建议的那样管理字符,但像openssl这样的工具可能会坚持你输入它( Expect 通过设置伪终端来解决这个问题)。

答案 3 :(得分:0)

您还可以使用here document直接在bash脚本中包含输入:

interactive-program <<LimitString
command #1
command #2
...
LimitString

(但@hop建议的配置文件选项仍然是最好的主意。)