Perl和Python用Telnet连接交换机

无论是Perl语言还是Python语言,作为网络工程师免不了要写脚本自动化操作交换机。

访问交换机一般用telnet协议或者SSH协议。而Telnet协议较为简单,也是最常用的。

在Perl语言中,使用Telnet协议依赖Net::Telnet模块,我最初也是用这个协议做的交换机自动化运维。

在Python语言中,通常使用标准库自带的telnetlib包。

但是,对于交换机操作,免不了要处理类似show run,display current-configuration之类的长返回信息的命令,当我们使用putty或者secureCRT时,出现带有“More”字样的一行,通常使用回车或者空格翻页。而在使用perl或python开发时,免不了要处理这个头痛的问题。

最开始,我是根据perl语言模块的中思想进行处理的:

通过一个正则表达式查找“–More–”行,当出现该行时发送空格翻页,再通过数组将翻页所得的所有信息进行拼接。十分繁琐。

最近,我才发现这么做完全没必要。在思科/H3C/华为产品中telnet登录后直接输入一条“一次性输出所有信息”的配置命令就可以解决了:

#CISCO:
terminal length 0
#HUAWEI/H3C:
screen-length 0
#再补充一个Juniper的JunOS产品的,需要在准备一次性全部显示的命令后面加管道符和no-more,例如:
show | no-more

这就将复杂读取语句简化了。

标签