2013-12-17 135 views
1

我是python腳本編程的新手,但我製作了一個腳本,可以與我的網絡上的其他設備一起使用。我正在嘗試修改一個腳本,該腳本將指示遠程設備將其配置備份到TFTP服務器。對於我的3Com,HP交換機來說,它工作正常,但我只是添加了一個DLINK POE交換機而已。該守則如下。Python Telnet腳本

import getpass 
import sys 
import telnetlib 

HOST = "10.3.5.90" 
user = "admin" 
password = "Password" 

tn = telnetlib.Telnet(HOST) 

tn.read_until("DGS-12010-10P login: ") 
tn.write(user + "\r") 
tn.read_until("Password: ") 
tn.write(password + "\r") 
tn.read_until("DGS-1210-10P> ") 
tn.write("upload cfg_toTFTP tftp://10.5.5.2/DGS-1210-10P.bin" + "\r") 
tn.read_until("DGS-1210-10P> ") 
tn.write("logout" + "\r") 
tn.close() 

print "Backup Complete POE Switch" 

我總是得到下面的輸出並超時。我想不通,我做錯了什麼,因爲它的工作原理與30+設備沒有打嗝

Traceback (most recent call last): 
File "/backup/scripts/05-POE-switch.py", line 13, in <module> 
tn.read_until("Password: ") 
File "/usr/lib/python2.7/telnetlib.py", line 319, in read_until 
return self.read_very_lazy() 
File "/usr/lib/python2.7/telnetlib.py", line 395, in read_very_lazy 
raise EOFError, 'telnet connection closed' 

預先感謝您對您有所幫助。

+0

它的工作原理如果您手動遠程登錄設備?它是否會發出您在腳本中等待的'確切'回答? – Gerrat

+0

如果我手動遠程登錄到設備並鍵入命令,它將起作用並將文件TFTP傳輸到我的服務器。答案是當我嘗試執行Python腳本時 – user3112240

回答

1

嘗試發送\r\n而不是\r作爲行尾終止符。我認爲這是你的問題。

否則,使用Wireshark監視「手動」 telnet會話 與設備之間的TCP通信:你會看到它發出準確,你會發現你有什麼送...

+0

看起來我正在拔出wireshark。將它改爲''\ r \ n''不起作用 – user3112240

+0

好的。祝你好運 ! – mguijarr

+0

關於這方面的任何消息?你有沒有找到解決問題的辦法? – mguijarr