背景
我在网络和电信领域的工作中,需要自动化处理一些传统硬件只能通过 craft 端口(RS-232 串行端口)、SNMP 或 telnet 访问的情况。有时候,telnet 是获取特定信息的唯一途径,但是由于 telnet 是为人类设计的界面,因此需要进行屏幕抓取。此外,还存在仅更新部分内容以节省带宽的屏幕抓取问题(参见 ncurses)。在我的工作中,我使用了 ActiveState Expect 和 Python telnet 库。
问题
哪些语言和库可以自动化处理 telnet 会话,并满足以下要求:
- 适用于大型项目(例如 Tcl 在我的经验中似乎不如 Python 扩展性好,而且已经过时)
- 跨平台(例如 Pexpect 不支持 Windows,Activestate Expect 在 Windows 上的表现也不同,并且需要在较新的机器上关闭 DEP)
- 能够屏幕抓取会话,以便在命令行程序中更新部分内容的情况下使用(类似于 ncurses 的行为)
- 免费,就像啤酒一样!
最好的解决方案还应包括以下内容:
- 易于重新分发(例如不需要在计算机上安装某些庞大的运行时库)
- 也适用于 SSH、串行连接和其他命令行接口。