2017-01-17 9 views
2

C 프로그램 용 파이썬 GUI를 개발합니다. 프로그램은 두 개의 암호를 요구합니다. 암호 promt를 기다린 다음 암호를 코드에 삽입하려면 어떻게합니까? 순간 요청시 Python popen() 삽입 암호

나는 통해이 작업을 수행하려고 :

subprocess.popen.communicate(input) 

그러나 프로그램이 다시 쉘에 암호를 요구로이 작동하지 않습니다.

  • 쉘 :
  • 표준 입력 "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 'Expect와 같이 작동합니다. 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