我使用python自动执行某些任务,但是遇到了一些障碍。我自动化的任务之一需要在shell中输入用户。
要求您使用电子邮件地址作为参数运行命令(足够简单),然后要求您使用该电子邮件地址的密码进行身份验证。如何模拟用户输入以提供密码?
之后还有一些菜单会询问选项,输入只需重复输入即可。这是如何模拟的?请记住,此窗口不会始终具有焦点..
答案 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来实现这个目标。