1

我是 python 脚本的新手,但我制作了一个可以与我网络上的其他设备一起使用的脚本。我正在尝试修改一个脚本,该脚本将指示远程设备将其配置备份到 TFTP 服务器。它适用于我的 3Com、HP 交换机,但我只是添加了一个 DLINK POE 交换机,它就死了。代码如下。

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'

预先感谢您的帮助。

4

1 回答 1

1

尝试发送\r\n而不是仅仅\r作为行尾终止符。我觉得是你的问题。

否则,请使用 wireshark 监控“手动”远程登录会话与您的设备之间的 TCP 通信:您将看到它准确发送的内容,您将看到您必须发送的内容......

于 2013-12-17T20:09:02.927 回答