Python popen()在被要求时插入密码

时间:2017-01-17 09:47:00

标签: python stdout stdin popen

我为c程序开发了一个python gui。该程序要求两个密码。 我如何等待密码promt然后在代码中插入密码?

目前我尝试通过以下方式执行此操作:

../

但是,当程序再次询问shell中的密码时,这并不起作用。

只是为了你的理解,这是程序的流程:

  • shell:使用一些参数执行程序
  • stdout:"请插入pw 1"
  • stdin:pw1
  • stdout:"请插入pw 2"
  • stdin:pw2

1 个答案:

答案 0 :(得分:2)

你应该考虑使用另一个图书馆:Pexpect

  

Pexpect是一个纯Python模块,用于生成子应用程序;   控制他们;并回应其产出中的预期模式。   Pexpect就像Don Libes的Expect一样。 Pexpect允许你的脚本   生成一个子应用程序并控制它就像人类正在打字一样   命令。

以下是连接到FTP服务器时提供用户名和密码的代码示例:

import pexpect
child = pexpect.spawn('ftp ftp.openbsd.org')
child.expect('Name .*: ')
child.sendline('bob')
child.expect('Password:')
child.sendline('thisisnotasecurepassword')