自动化终端计划?

时间:2012-11-12 14:32:30

标签: python

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

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

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

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

答案 1 :(得分: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

您可以使用它做更多可能对您有用的内容,并在文档中显示。