Python telnet 不显示结果

Posted

技术标签:

【中文标题】Python telnet 不显示结果【英文标题】:Python telnet not showing result 【发布时间】:2021-08-07 02:52:57 【问题描述】:

使用 python 脚本我想在 mikrotik 路由器上进行一些配置,看起来脚本是正确的并且没有给出错误但没有打印命令输出而结束

import telnetlib
import time
dev_ip = "172.16.62.160"
user = "admin"
PASSWORD = ""
comm1 = "ip address print"

tn = telnetlib.Telnet(dev_ip, timeout=1)
tn.read_until(b"Login: ")
tn.write(user.encode("ascii") + b'\n')
tn.read_until(b"Password: ")
tn.write(PASSWORD.encode("ascii") + b'\n')
tn.read_until(b">")
time.sleep(1)
tn.write(comm1.encode("ascii") + b"\r\n")
Showcmdoutput = tn.read_very_eager().decode('ascii')
print(Showcmdoutput)
tn.close()
print("DONE")

在 Ubuntu 桌面上运行

【问题讨论】:

如果在路由器开始响应您发送的命令之前有一点延迟,.read_very_eager() 将返回一个空字符串 - 它不会等待数据可用。命令后的简短sleep() 可能会有所帮助,或者如果有一些保证字符串将始终出现在命令结果的末尾,则更改为使用.read_until() 【参考方案1】:

放置后问题解决:

time.sleep(1)

Showcmdoutput = tn.read_very_eager().decode('ascii')之前

tn.write(comm1.encode("ascii") + b"\r\n")
time.sleep(1)
Showcmdoutput = tn.read_very_eager().decode('ascii')

【讨论】:

以上是关于Python telnet 不显示结果的主要内容,如果未能解决你的问题,请参考以下文章

python telnet

sublime运行python时,控制台不显示结果

linux用户程序不能显示在telnet

telnet 连接不上linux上mysql

显示 mongodb python 中特定字段的出现次数的结果不正确

电脑无法使用telnet命令显示在端口23连接失败怎么解决