我正在编写一个 python 脚本来运行一些命令。其中一些命令要求用户输入密码,我确实尝试在其标准输入中输入数据,但它不起作用,这里有两个简单的 python 程序代表问题
input.py
import getpass
print raw_input('text1:')
print getpass.getpass('pass1:')
print getpass.getpass('pass2:')
put_data.py
import subprocess
import getpass
def run(cmd, input=None):
stdin=None
if input:
stdin=subprocess.PIPE
p = subprocess.Popen(cmd, shell=True, stdin=stdin)
p.communicate(input)
if p.returncode:
raise Exception('Failed to run command %r' % cmd)
input ="""text1
password1
password2
"""
run('python test.py', input)
这是输出
[guest@host01 ~]# python put_data.py
text1:text1
pass1:
它就停在 pass1 字段上。问题是,为什么我不能将数据放入标准输入以将数据输入密码字段?如何将数据写入密码字段?
你需要pexpect http://pexpect.sourceforge.net/pexpect.html此类情况的模块。
Pexpect 是一个 Python 模块
生成子应用程序和
自动控制它们。
Pexpect 可用于自动化
交互式应用程序,例如 ssh、
ftp、密码、telnet 等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)