说明:这是一个自动化运维实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。
Python基于telnetlib模块实现交换机全面巡检
项目背景
在工作中需要每天定时进行交换机运行状况的巡检,每天都是重复这样的工作,而且每天手动巡检花费很大的时间和精力。说明:这是给一个客户开发的交换机自动化巡检项目。
需求分析
需求一
批量输入交换机IP地址:
说明:此处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
当执行结果为Failure: The port of this type does not support this operation或者Failure: This board does not exist时,该槽位不采集,执行下一槽位。每台设备读取两次,两次间隔1分钟,计算前后两次各个端口的差值,最后输出差值大于0的端口,输出xls表,如下:
需求二
目标:查每个端口下用户的光衰,统计出光衰最大和最小。
批量输入交换机IP地址:
说明:此处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) 这一列
输出如下:
需求三
针对需求一和需求二输出的结果进行合并,合并到一个excel文件中。合并规则:以需求一输出的结果为基准,把需求二输出的结果合并到需求一结果中,缺失值用0填充。最终输出结果如下:
说明:此项目的IP地址均为模拟的IP,非真实IP地址,数据也均为去除敏感信息后的数据。
此项目难点:
解决巡检命令输出结果超出缓冲区的问题,把巡检命令所有的日志都保存下来;通过正则表达式实现了不同类型交换机各种输出日志格式的判断以及实现了最后统一的输出。
本次机器学习项目实战所需的资料,项目资源如下:
项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w
提取码:bcbp网盘如果失效,可以添加博主微信:zy10178083