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 到路由器并且脚本挂起.... 不知道怎么回事。已尝试调试,但无法确定输出。

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)

这是它挂在调试中的地方。

谢谢威廉

4

1 回答 1

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()
于 2013-02-13T14:49:28.857 回答