2013-02-13 5 views
0
import getpass 
import sys 
import telnetlib 

tn = telnetlib.Telnet("xxxxxxxx") 
tn.write("xxxxxx" + "\n") 
tn.write("xxxxxx" + "\n") 

tn.write("show version\n") 
tn.write("exit\n") 

print tn.read_all() 

라우터에 텔넷 연결 시도 중 스크립트가 멈추고 있습니다. 디버그를 시도했지만 출력의 머리 나 발가락을 만들지 못했습니다.Python 스크립트의 라우터에 텔넷

telnetlib.py(511):   if self.irawq >= len(self.rawq): 
telnetlib.py(512):    self.rawq = '' 
telnetlib.py(513):    self.irawq = 0 
telnetlib.py(516):   buf = self.sock.recv(50) 

여기가 디버그에서 멈 춥니 다.

감사 윌리엄

+0

나는 read_some()을 사용할 때 MOTD 배너에 포함됩니다. 그러나 간신히 어떤. – LinuxBill

답변

1

나는이 하나를 응답 할 수 있습니다. 그것을 고정 관리.

라우터에서 사용자 입력을 요청하면 명령에 대한 자세한 정보를 볼 수 있습니다.

그래서 "show version"을 요청하면 명령 줄에 많은 정보를 제공 한 다음 더 많은 정보를 보려면 공간을 확보 해줄 것을 요청합니다.

이 문제를 해결하기 위해 내가 실행하는 첫 번째 명령은 "term len 0"입니다. 사용자 입력을 요청하고 즉시 모든 것을 시작합니다.

아래가 최종본입니다. 꽤 바뀌었지만 그 작품.

import sys 
import telnetlib 

tn = telnetlib.Telnet("xxxxxxxx") 

TELNET_PROMPT="xxxxxxxxxx" 
TIMEOUT=1 
tn.write("xxxxxxx"+"\n") 
tn.write("xxxxxxx"+"\n") 
print tn.read_until(TELNET_PROMPT, TIMEOUT) 
tn.write("term len 0" + "\n") 
print tn.read_until(TELNET_PROMPT, TIMEOUT) 
tn.write("show version" + "\n") 
print tn.read_until(TELNET_PROMPT, TIMEOUT) 
tn.write("exit"+"\n") 
tn.close() 
관련 문제