2013-12-17 103 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