如何在Python中程序化地输入密码提示?
我需要在Python脚本中实现类似Unix中expect
的功能,因为有个外部程序在提示输入密码。目前我在这样做:
p = subprocess.Popen("execA",stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
这里的execA
是在提示输入密码。我想用“expect”来自动输入这个密码。
看起来有几个替代方案:
有没有更好的方法来实现这个功能?如果有更高效的做法,我很想知道。
2 个回答
0
这类程序通常直接访问终端,并将其设置为“原始”模式。所以标准输入输出的管道就不能用了。你需要在一个伪终端(pty)中启动子进程。简单的读写操作可能就能解决问题。这些“类似expect的”模块通常用于更复杂的场景。
当然,我更喜欢这个,但我不确定它在OSX上是否能用。
1
Pexpect是我以前用过的一个工具,可以用来做类似的事情。
不过,根据不同的程序,有时候直接写入它的标准输入(stdin)就够了?