如何使用Python对交换机进行自动化巡检?

概述 脚本功能功能是全程模拟了人的手工巡检,并收集数据,处理后发送邮件。主要分为远程到交换机,查看转换机状态如:show process cpu | in cpu utilization查看cpu占用率;将查询后的结果记录并保存下来,如结果;11%;读取查询的数据文件;将文件中的数据如11%提取部分需要计算出来;创建excel表格,将上一步获取到的数据填写到表格中;编写固定格式的邮件内容,并将保存好的excel表格附到邮件中发送;编写crontab定时任务,实现全程自动化。
流程图 '''author:myfudate:2019-08-26e-mail:myfu@****.com'''import pexpectimport sysimport timeimport osimport xlwtdef cisco_check():        ip=[10.3.240.14,10.3.240.15,10.3.240.17,10.3.240.20,10.3.240.21]        name=[szns-kjy4f-acs-05#,szns-kjy4f-acs-06#,szns-kjy4f-acs-08#,szns-kjy9f-acs-11#,szns-kjy9f-acs-12#]        stat_time=time.time()        stru_time=time.localtime(stat_time)        strf_time=time.strftime(%y-%m-%d)        for i in range(0,len(ip)):                child=pexpect.spawn('ssh fumy@%s'%ip[i])                fout=open('/root/switch_check/%s.txt'%(name[i][:-1]),'wb+')                child.logfile = fout                if ip[i]==10.3.240.21:                        child.expect(fumy@10.3.240.21's password:)                else:                        child.expect('password: ')                child.sendline(你自己的密码)                child.expect(%s%name[i])                child.sendline(sh env power)                child.expect(%s%name[i])                child.sendline(show process cpu | in cpu utilization)                child.expect(%s%name[i])                child.sendline(sh version | in uptime)                child.expect(%s%name[i])                child.sendline(show processes memory | in used)                child.expect(%s%name[i])                child.sendline(sh env fan)                child.expect(%s%name[i])                child.sendline(sh log | in console logging)                child.expect(%s%name[i])                child.sendline(exit)                time.sleep(3)        file_list=os.listdir(/root/switch_check)        with open(/root/switch_check/%s%file_list[0]) as f1:                for i in f1:                        if power in i:                                power1=i[8:].strip()                        if cpu utilization in i:                                cpu1=i[72:].strip()                        if %s uptime is%file_list[0][:-4] in i:                                uptime1=.join(i[27:].strip().split(,))                        if processor pool total: in i:                                memory1=%.2f%%%((int(i[38:50].strip())/int(i[21:33].strip()))*100)                        if fan is in i:                                fan1=i[6:].strip()                        if level debugging in i:                                log1=i[37:43].strip()        with open(/root/switch_check/%s%file_list[1]) as f2:                for i in f2:                        if power in i:                                power2=i[8:].strip()                        if cpu utilization in i:                                cpu2=i[72:].strip()                        if %s uptime is%file_list[1][:-4] in i:                                uptime2=.join(i[27:].strip().split(,))                        if processor pool total: in i:                                memory2=%.2f%%%((int(i[38:50].strip())/int(i[21:33].strip()))*100)                        if fan is in i:                                fan2=i[6:].strip()                        if level debugging in i:                                log2=i[37:43].strip()        with open(/root/switch_check/%s%file_list[2]) as f3:                for i in f3:                        if power in i:                                power3=i[8:].strip()                        if cpu utilization in i:                                cpu3=i[72:].strip()                        if %s uptime is%file_list[2][:-4] in i:                                uptime3=.join(i[27:].strip().split(,))                        if processor pool total: in i:                                memory3=%.2f%%%((int(i[38:50].strip())/int(i[21:33].strip()))*100)                        if fan is in i:                                fan3=i[6:].strip()                        if level debugging in i:                                log3=i[37:43].strip()        with open(/root/switch_check/%s%file_list[3]) as f4:                for i in f4:                        if power in i:                                power4=i[24:].strip()                        if cpu utilization in i:                                cpu4=i[72:].strip()                        if %s uptime is%file_list[3][:-4] in i:                                uptime4=.join(i[27:].strip().split(,))                        if total:  in i:                                memory4=%.2f%%%((int(i[21:29].strip())/int(i[6:14].strip()))*100)                        if fan is in i:                                fan4=i[6:].strip()                        if level debugging in i:                                log4=i[37:45].strip()                with open(/root/switch_check/%s%file_list[4]) as f5:                for i in f5:                        if power in i:                                power5=i[24:].strip()                        if cpu utilization in i:                                cpu5=i[72:].strip()                        if %s uptime is%file_list[4][:-4] in i:                                uptime5=.join(i[27:].strip().split(,))                        if total:  in i:                                memory5=%.2f%%%((int(i[21:29].strip())/int(i[6:14].strip()))*100)                        if fan is in i:                                fan5=i[6:].strip()                        if level debugging in i:                                log5=i[37:44].strip()        workbook = xlwt.workbook(encoding = 'utf-8')        cisco = workbook.add_sheet('深圳网络设备巡检')        style = xlwt.xfstyle()        pattern = xlwt.pattern()        pattern.pattern = xlwt.pattern.solid_pattern        pattern.pattern_fore_colour = xlwt.style.colour_map['red']        style.pattern = pattern        borders = xlwt.borders()        borders.left = 1        borders.right = 1        borders.top = 1        borders.bottom = 1        style.borders = borders         al = xlwt.alignment()        al.horz = 0x02              al.vert = 0x01              style.alignment = al        style1 = xlwt.xfstyle()        borders = xlwt.borders()        borders.left = 1        borders.right = 1        borders.top = 1        borders.bottom = 1        style1.borders = borders        al = xlwt.alignment()        al.horz = 0x02              al.vert = 0x01              style1.alignment = al        style3 = xlwt.xfstyle()        borders = xlwt.borders()        borders.left = 1        borders.right = 1        borders.top = 1        borders.bottom = 1        style3.borders = borders        al = xlwt.alignment()        al.horz = 0x02              al.vert = 0x01              style3.alignment = al        first_col=cisco.col(0)        sec_col=cisco.col(1)        thr_col=cisco.col(2)        for_col=cisco.col(3)        first_col.width=200*25        sec_col.width=120*25        thr_col.width=120*25        for_col.width=320*25        cisco.write(0, 0,'设备名称',style)        cisco.write(0,1, '管理地址',style)        cisco.write(0,2, '检查项',style)        cisco.write(0,3, '检查结果',style)        cisco.write_merge(1,6,0,0,'%s'%file_list[0][:-4],style3)        cisco.write_merge(1,6,1,1,'%s'%ip[0],style3)        cisco.write(1,2, '电源状态',style1)        cisco.write(2,2, 'cpu使用率',style1)        cisco.write(3,2, '运行时间',style1)        cisco.write(4,2, '内存使用率',style1)        cisco.write(5,2, '风扇状态',style1)        cisco.write(6,2, '日志条目',style1)        cisco.write(1,3, power1,style3)        cisco.write(2,3, cpu1,style3)        cisco.write(3,3, uptime1,style3)        cisco.write(4,3, memory1,style3)        cisco.write(5,3, fan1,style3)        cisco.write(6,3, log1,style3)        cisco.write_merge(7,12,0,0,'%s'%file_list[1][:-4],style3)        cisco.write_merge(7,12,1,1,'%s'%ip[1],style3)        cisco.write(7,2, '电源状态',style1)        cisco.write(8,2, 'cpu使用率',style1)        cisco.write(9,2, '运行时间',style1)        cisco.write(10,2, '内存使用率',style1)        cisco.write(11,2, '风扇状态',style1)        cisco.write(12,2, '日志条目',style1)        cisco.write(7,3, power2,style3)        cisco.write(8,3, cpu2,style3)        cisco.write(9,3, uptime2,style3)        cisco.write(10,3, memory2,style3)        cisco.write(11,3, fan2,style3)        cisco.write(12,3, log2,style3)        cisco.write_merge(13,18,0,0,'%s'%file_list[2][:-4],style3)        cisco.write_merge(13,18,1,1,'%s'%ip[2],style3)        cisco.write(13,2, '电源状态',style1)        cisco.write(14,2, 'cpu使用率',style1)        cisco.write(15,2, '运行时间',style1)        cisco.write(16,2, '内存使用率',style1)        cisco.write(17,2, '风扇状态',style1)        cisco.write(18,2, '日志条目',style1)        cisco.write(13,3, power3,style3)        cisco.write(14,3, cpu3,style3)        cisco.write(15,3, uptime3,style3)        cisco.write(16,3, memory3,style3)        cisco.write(17,3, fan3,style3)        cisco.write(18,3, log3,style3)        cisco.write_merge(19,24,0,0,'%s'%file_list[3][:-4],style3)        cisco.write_merge(19,24,1,1,'%s'%ip[3],style3)        cisco.write(19,2, '电源状态',style1)        cisco.write(20,2, 'cpu使用率',style1)        cisco.write(21,2, '运行时间',style1)        cisco.write(22,2, '内存使用率',style1)        cisco.write(23,2, '风扇状态',style1)        cisco.write(24,2, '日志条目',style1)        cisco.write(19,3, power4,style3)        cisco.write(20,3, cpu4,style3)        cisco.write(21,3, uptime4,style3)        cisco.write(22,3, memory4,style3)        cisco.write(23,3, fan4,style3)        cisco.write(24,3, log4,style3)        cisco.write_merge(25,30,0,0,'%s'%file_list[4][:-4],style3)        cisco.write_merge(25,30,1,1,'%s'%ip[4],style3)        cisco.write(25,2, '电源状态',style1)        cisco.write(26,2, 'cpu使用率',style1)        cisco.write(27,2, '运行时间',style1)        cisco.write(28,2, '内存使用率',style1)        cisco.write(29,2, '风扇状态',style1)        cisco.write(30,2, '日志条目',style1)        cisco.write(25,3, power5,style3)        cisco.write(26,3, cpu5,style3)        cisco.write(27,3, uptime5,style3)        cisco.write(28,3, memory5,style3)        cisco.write(29,3, fan5,style3)        cisco.write(30,3, log5,style3)        workbook.save('sz_ndc_%s.xls'%strf_time)        os.system(mail -a /root/python/sz_ndc_%s.xls -s check_test 你的邮箱 /dev/null 2>&1 #每周五下午5点巡检 最终效果


发动机组控制系统的多重背景数据块应用
探讨变频和伺服的五大区别点
工信部:前5个月回收废旧动力电池量超去年全年
中国空间站的成功很耀眼,接下来会是芯片吗
浅谈关于深度学习方法的图像分割
如何使用Python对交换机进行自动化巡检?
关于比特大陆的发展之路的分析介绍
ITC将就飞利浦公司提出的申请展开337调查
中国光芯片行业市场需求分析与投资前景预测
LED封装基本技术参数要求及封装方式种类
华为手机掌门人余承东:2018年销量目标2亿台
全球独角兽企业图谱出炉:前五中国企业占三席
小米10为何成为很多“钉子户”的首选?
等风来不如追风去,看安富利如何拥抱新基建?
华为连续拿下两个5G首发权
校园后厨监管解决方案,建设智慧校园,干净又卫生
CoWos与SiP在AI领域扮演重要角色
全光谱半导体LED显示模组项目落户郑蒲港新区 计划总投资约2亿元
大联大世平新推出基于NXP LPC54606的联网交流充电桩系统的说明
让操作系统长命的5个要点