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)
这是它在调试中挂起的地方。
由于 威廉
答案 0 :(得分: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()