python - 使用 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()
我只想要显示版本的输出,但它显示所有输出,有没有办法只获得执行的最后一个命令的输出?
解决方案
有趣的是,我也在做同样的工作,我找到了解决方案,请查看此链接https://coderwall.com/p/0uxfba/read-stdout-from-telnet-terminal-in-python。
如果在调用 getMoreData 之前清空 your_class.data,您将始终将最后一个命令输出保存到数据列表中,然后您可以将其打印出来。
希望能帮助到你
推荐阅读
- c++ - 如果用户在数字中输入字符,如何重新提示用户?
- python - 当有重复项时,如何制作唯一的 col 和 row 并将它们的值映射为矩阵?
- protractor - 以下标签的最佳定位器是什么?
- python - Python 使用 map 和 os.remove 删除多个文件
- javascript - 如何在基类中实现 ES6 javascript 单例函数
- azure-devops - 无法从 Azure DevOps Build Pipeline 中的 Azure PowerShell 任务将 Key Vault 机密作为纯文本读取
- html - Flexbox - 连续两列
- python - 无法登录 Django 测试
- python - 如何找到整个测试套件在 Pytest 中完成所需的时间
- java - 如何在主线程中创建一个具有无限循环的活动 JFrame?