首页 > 解决方案 > 使用 telnetlib 读取每个命令的输出

问题描述

我正在使用 Python 的 telnetlib 远程登录到网络路由器并执行一些命令,我​​想获得这些命令的输出。

tn   =   telnetlib . Telnet ( "x.x.x.x", 23, 600 ) 
tn.expect([b"login as:"], 5)
tn.write(b'admin\r')
tn.expect([b"Password:"], 5)
tn.write(b"abc\r")
tn.write(b"show version\r")
time.sleep(3)
ret1 = tn.read_eager().decode('ascii')
print("Show Version Start \n")
print(repr(ret1))
print("\nShow Version End")
tn.write(b"exit\r")
print(tn.read_all().decode('ascii'))
tn.close()

我只想要显示版本的输出,但它显示所有输出,有没有办法只获得执行的最后一个命令的输出?

标签: pythontelnettelnetlib

解决方案


有趣的是,我也在做同样的工作,我找到了解决方案,请查看此链接https://coderwall.com/p/0uxfba/read-stdout-from-telnet-terminal-in-python

如果在调用 getMoreData 之前清空 your_class.data,您将始终将最后一个命令输出保存到数据列表中,然后您可以将其打印出来。

希望能帮助到你


推荐阅读