2013-10-17 2 views
1

나는 pexpect를 사용하여 스폰 개체를 생성하는 스크립트를 가지고 있습니다.Python Pexpect 스폰 개체

코드는 다음과 같습니다

self.rshcmd='rsh 192.X.X.X' 
self.pipe1 = pexpect.spawn(command=self.rshcmd, logfile=sys.stdout,maxread=512) 

을 지금이 들어갈 후, 나는 >

입니다 얻을 그리고 지금은 su를 전송 한 후 암호를 제공하여 SU이되는 프롬프트에 대한 기대 . 지금 예상으로 내 메시지가 #

내가 telnet 192.168.1.1을 보내이 라우터에 텔넷 192.168.1.1

입니다 PC (192.X.X.X) 양산이에 연결된 라우터가된다. 이 라우터에서 끝나면 텔넷 세션에서 빠져 나가고 싶습니다.

그래서 exit을 보내고 #을 기대합니다. 스폰 된 PC의 루트로 돌아갈 예정입니다. 그러나 내가 보는 것은 사실 내가 프롬프트로 <을 얻고 있다는 것입니다.

어쨌든 "exit"를 두 번 보내고 있습니다. 하나는 텔넷에서 나를 빼앗아 다른 사람은 나를 뿌리에서 빼앗아 간다. 나는 파이프가 씻겨 나가는 것이 아니라고 생각하고 오래된 쌓인 명령을 보내 게됩니다.

파이프의 모든 이전 명령을 플러시 할 수있는 방법이 있습니까? 문서에서

는 세척 기능이있다,하지만 아무것도하지 않는 것 같다

flush(self) 
    This does nothing. It is here to support the interface for a 
    File-like object. 
+0

pexpect는 명령을 두 번 보내지 않습니다. 'exit'를 보내기 전에 텔넷 연결이 닫힐 수 있습니까? –

답변

1

이 문제를 해결할 수

child.send(cmd) 
child.pexpect(cmd) 
child.send('\n') 

대신

child.sendline(cmd) 

이의 마십시오. (하지만 암호를 보낼 때 child.sendline (passwrd))

관련 문제