2017-01-17 100 views
2

我为c程序开发了一个python gui。本程序要求输入两个密码。 如何等待密码promt,然后在代码中插入密码?Python popen()询问时输入密码

目前,我尝试通过这样做:

subprocess.popen.communicate(input) 

但由于程序要求在shell中再次输入密码不起作用。

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

  • 壳:有一些参数执行程序
  • 标准输出: “请插入PW 1”
  • 标准输入:PW1
  • 标准输出: “请插入PW 2”
  • 标准输入:PW2
+0

的可能的复制[无法与子\ [蟒\]的方法提供密码]( http://stackoverflow.com/questions/25189348/unable-to-provide-password-to-a-process-with-subprocess-python) –

回答

2

您应该考虑使用另一个库:Pexpect

Pexpect是一个用于产生子应用程序的纯Python模块; 控制它们;并对其产出中的预期模式做出反应。 Pexpect像Don Libes的期待一样工作。 Pexpect允许脚本 生成一个子应用程序并对其进行控制,就像人类正在键入 命令一样。

下面是代码,得到用户名和密码的样品连接到FTP服务器时:

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

谢谢你这样做,它像一个魅力 – Florian

+0

不错,有一个伟大的天 ;) – iFlo