如何使用python自动化shell输入?

时间:2011-08-10 12:22:21

标签: python unix shell

我使用python自动执行某些任务,但是遇到了一些障碍。我自动化的任务之一需要在shell中输入用户。

要求您使用电子邮件地址作为参数运行命令(足够简单),然后要求您使用该电子邮件地址的密码进行身份验证。如何模拟用户输入以提供密码?

之后还有一些菜单会询问选项,输入只需重复输入即可。这是如何模拟的?请记住,此窗口不会始终具有焦点..

3 个答案:

答案 0 :(得分:3)

我不确定你在第二部分中提到了什么,但可以使用pexpect模块控制子进程。例如:

#!/usr/bin/env python

import pexpect
import sys

# Get email and password somehow
#email = ...
#password = ...

# Start the subprocess
child = pexpect.spawn('mycommand %s' % email)
# redirect output to stdout
child.logfile_read = sys.stdout

# Assumes the prompt is "password:"
child.expect('password:')
child.sendline(password)

# Wait for the process to close its output
child.expect(pexpect.EOF)

答案 1 :(得分:1)

看起来你的想法是错误的。您只需要通过管道向收件人发送一些字节(在您的情况下为shell脚本),这可以通过subprocess完成。

答案 2 :(得分:0)

我想你可以使用expect来实现这个目标。