0

我有一个 python 脚本,在运行它之前会询问您需要设置的几个用户键入的选项。我想知道是否可以制作一个 bash 脚本来自动填充 bash 脚本中为我定义的选项?

4

2 回答 2

2

尝试这样的事情:

echo -n 'First answer\nSecond answer\n' | python script.py

对于要求更高的任务,请使用expect

于 2012-11-12T14:34:38.847 回答
1

我认为您正在寻找的是Expect-lite ( http://expect-lite.sourceforge.net )。它是一种简单的脚本语言,可以轻松地自动将响应传递给 cli 程序。它的重量很轻,可以让你编写一个脚本来运行你的 python 程序。

例如,如果您想通过 ssh 自动使用密码登录,您可以编写如下内容:

>ssh root@host-021
<assword:
>>secret_password
# issue a command once logged in
>ls
>exit

但是输出可能有点混乱。相反,您可以使用 Python 模块pexpect ( http://www.noah.org/wiki/pexpect ),它可以让您编写一个简单的 Python 脚本来运行其他 Python 脚本,同时自动响应提示。

上面的相同示例将变为:

child = pexpect.spawn('ssh root@host-021')
child.expect('assword:')
child.sendline('secret_password')
child.sendline('ls')
child.sendline('exit')

这反过来会屏蔽输出,但您可以设置一个日志文件来记录输出。您也可以像这样将日志文件设置为 STDOUT child.logfile = sys.stdout

你可以用它做更多可能对你有用的事情,并显示在文档中。

于 2012-11-12T17:48:10.827 回答