【发布时间】:2012-11-12 14:32:30
【问题描述】:
我有一个 python 脚本,在运行它之前会询问您需要设置的几个用户键入的选项。我想知道是否可以制作一个 bash 脚本来自动填充 bash 脚本中为我定义的选项?
【问题讨论】:
-
我会努力的。我现在正在使用移动设备,不过感谢您的提示。
标签: python
我有一个 python 脚本,在运行它之前会询问您需要设置的几个用户键入的选项。我想知道是否可以制作一个 bash 脚本来自动填充 bash 脚本中为我定义的选项?
【问题讨论】:
标签: python
【讨论】:
python script $(echo -n 'First answer\nSecond answer\n')
我认为您正在寻找的是 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')
这反过来会屏蔽输出,但您可以设置一个日志文件来记录输出。你也可以像child.logfile = sys.stdout一样将日志文件设置为STDOUT。
您可以用它做更多可能对您有用的事情,并在文档中显示。
【讨论】: