如何在Python中程序化地输入密码提示?

2 投票
2 回答
692 浏览
提问于 2025-04-16 23:11

我需要在Python脚本中实现类似Unix中expect的功能,因为有个外部程序在提示输入密码。目前我在这样做:

p = subprocess.Popen("execA",stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

这里的execA是在提示输入密码。我想用“expect”来自动输入这个密码。

看起来有几个替代方案:

Pexpect - Noah Spurrier

Python Expect

有没有更好的方法来实现这个功能?如果有更高效的做法,我很想知道。

2 个回答

0

这类程序通常直接访问终端,并将其设置为“原始”模式。所以标准输入输出的管道就不能用了。你需要在一个伪终端(pty)中启动子进程。简单的读写操作可能就能解决问题。这些“类似expect的”模块通常用于更复杂的场景。

当然,我更喜欢这个,但我不确定它在OSX上是否能用。

1

Pexpect是我以前用过的一个工具,可以用来做类似的事情。

不过,根据不同的程序,有时候直接写入它的标准输入(stdin)就够了?

撰写回答