2014-05-23 1 views
3

"password -"를 묻는 @ "tool --server = commander.company.com login username"명령이 있습니다. 나는 pexpect를 사용하여 명령을 실행하고 그것을 기대하고 sendline을 사용하여 암호를 보냅니다. 실행하면 오류는 없지만이 명령은 실행되지 않는 것 같습니다. 이것이 실제로 실행되었는지 어떻게 알 수 있습니까?pexpect 명령을 실제로 실행하는 방법을 아는 방법은 무엇입니까?

child = pexpect.spawn ('tool --server=commander.company.com login username') 
child.expect('Password:') 
child.sendline('#password') 

답변

2

child.isalive()child.status 쉼표를 결정하는데 유용하다 그러나 실행 상태가 pexpect.spawn이면 입출력이 기록 될 열린 파일을 전달할 수도 있습니다. 생성 된 프로세스가 예상대로 실행되는지 여부를 확인할 수 있습니다 (예 :

import sys 
child = pexpect.spawn('tool --server=commander.company.com login username', logfile=sys.stdout) 
child.expect('Password:') 
child.sendline('#password') 

이렇게하면 모든 입력과 출력이 표준 출력 스트림으로 전송됩니다. logfile_readlogfile_send도 유용 할 수 있습니다.

0

두 가지 일들이 여기에 확인할 수 있습니다 pexpect.spawn 예를 이 테스트의

가능한지

  • p.isalive()
  • (자기) 방식 자식 프로세스 인 경우 실행 여부. 이것은 비 차단입니다. 자식이 종료 된 경우 자식의 exitstatus 또는 signalstatus를 으로 읽습니다. 자식 프로세스가 실행 중일 경우 True를 반환하고 그렇지 않으면 False를 반환합니다. 문자 그대로 SECONDS (Solaris의 올바른 상태를 반환하는 데 걸릴 수 있습니다.

  • p.status

예 : 자세한 내용은

>>> from pexpect import spawn 
>>> p = spawn("ls") 
>>> p.isalive() 
False 
>>> p.status 
0 

은 다음을 참조하십시오 pexpect Documetnation

관련 문제