python ssh交换机 python交换机ssh巡检_python

python ssh交换机 python交换机ssh巡检_python ssh交换机_02

python ssh交换机 python交换机ssh巡检_自动化_03

  

python ssh交换机 python交换机ssh巡检_python ssh交换机_04

Python基于telnetlib模块实现交换机全面巡检


项目背景

在工作中需要每天定时进行交换机运行状况的巡检,每天都是重复这样的工作,而且每天手动巡检花费很大的时间和精力。说明:这是给一个客户开发的交换机自动化巡检项目。

需求分析

需求一

批量输入交换机IP地址:

python ssh交换机 python交换机ssh巡检_python ssh交换机_05

说明:此处IP数量不限制。

依次输入用户名yonghu,密码pw123,输入命令enable、config、diagnose;

先执行” clear statistics emac 0//槽位号 端口号”,然后执行命令“display statistics emac 0/槽位号 端口号”,槽位号1-15,端口号0-7,输出结果中读取“Received line code error frames”后的数值,例如1槽从0/1 0执行到0/1 7

python ssh交换机 python交换机ssh巡检_自动化_06

当执行结果为Failure: The port of this type does not support this operation或者Failure: This board does not exist时,该槽位不采集,执行下一槽位。每台设备读取两次,两次间隔1分钟,计算前后两次各个端口的差值,最后输出差值大于0的端口,输出xls表,如下:

python ssh交换机 python交换机ssh巡检_自动化_07

需求二

目标:查每个端口下用户的光衰,统计出光衰最大和最小。

批量输入交换机IP地址:

python ssh交换机 python交换机ssh巡检_自动化_08

说明:此处IP数量不限制。

依次输入用户名yonghu,密码pw123,输入命令enable、config、diagnose;

执行命令interface epon 0/1  这里0/后面跟槽位,1-15

display ont optical-info 0 all  这条命令,端口是0-7

输出结果 统计OLT Rx ONT power(dBm) 这一列

输出如下:

python ssh交换机 python交换机ssh巡检_python_09

需求三

针对需求一和需求二输出的结果进行合并,合并到一个excel文件中。合并规则:以需求一输出的结果为基准,把需求二输出的结果合并到需求一结果中,缺失值用0填充。最终输出结果如下:

python ssh交换机 python交换机ssh巡检_自动化_10

说明:此项目的IP地址均为模拟的IP,非真实IP地址,数据也均为去除敏感信息后的数据。

此项目难点:

  1. 解决巡检命令输出结果超出缓冲区的问题,把巡检命令所有的日志都保存下来;
  2. 通过正则表达式实现了不同类型交换机各种输出日志格式的判断以及实现了最后统一的输出。