背景
当传统硬件无法在其他接口中提供简单的解决方案时,我在网络和电信方面的部分工作涉及自动化 telnet 会话。许多旧设备只能通过工艺端口(RS-232 串行端口)、SNMP 或 telnet 访问。有时 telnet 是访问特定信息的唯一方式,但是 telnet 被设计为人机界面,因此需要屏幕抓取。此外,还存在抓取屏幕的问题,其中仅更新部分以节省带宽(请参阅ncurses)。在我的工作中,我使用了 ActiveState Expect 和 Python telnet 库。
问题
哪些语言和库能够自动化 telnet 会话并具有以下要求:
- 适用于大型项目(例如,根据我的经验,Tcl 的扩展性似乎不如 Python,而且似乎已经过时)
- 跨平台(例如,Pexpect 在 Windows 上不起作用,Activestate Expect 在 Windows 上的行为不同,并且需要关闭较新机器上的 DEP)
- 能够筛选重新绘制屏幕部分的抓取会话(类似于命令行程序中 ncurses 的行为)
- 像啤酒一样免费!
更好的解决方案还包括以下内容:
- 易于再分发(例如,不需要在机器上安装一些巨大的运行时。)
- 也适用于 SSH、串行连接和其他命令行界面。