用Python脚本Telnet到路由器

2024-05-13 19:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

试图远程登录到路由器而脚本挂起。。。。不知道怎么了。尝试过调试,但无法完全理解输出。在

^{pr2}$

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

谢谢 威廉


Tags: importreadversionshowsysexitalltelnet
1条回答
网友
1楼 · 发布于 2024-05-13 19:32:16

我可以回答这个问题。设法把它修好了。在

当路由器请求用户输入以查看有关该命令的更多信息时,python脚本正在失控。在

所以当我要求一个“show version”时,它会在命令行上给出很多信息,然后让你点击space查看更多信息。在

为了解决这个问题,我执行的第一个命令是“termlen0”。停止请求任何用户输入,并立即将其全部激发出来。在

下面是最后的脚本。改变了不少,但它起作用了。在

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()

相关问题 更多 >