2013-02-13 47 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() 

嘗試遠程登錄到路由器和腳本掛起....不知道怎麼回事。已經嘗試過調試,但無法制作輸出的頭部或腳趾。Telnet到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 2013-02-13 12:45:53

回答

1

我可以回答這個問題。管理得到修復。

當路由器詢問用戶輸入以查看有關該命令的更多信息時,python腳本即將脫軌。

因此,當我要求一個「顯示版本」時,它會在命令行上發出大量信息,然後要求您點擊空間以查看更多信息。

爲了解決這個問題,我執行的第一個命令是「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() 
相關問題