0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

网络技术干货圈 来源:网络技术干货圈 2023-01-15 15:33 次阅读

概述

脚本功能功能是全程模拟了人的手工巡检,并收集数据,处理后发送邮件。主要分为远程到交换机,查看转换机状态如:show process cpu | in CPU utilization查看cpu占用率;将查询后的结果记录并保存下来,如结果;11%;读取查询的数据文件;将文件中的数据如11%提取部分需要计算出来;创建excel表格,将上一步获取到的数据填写到表格中;编写固定格式的邮件内容,并将保存好的excel表格附到邮件中发送;编写crontab定时任务,实现全程自动化。

流程图

ba0e9466-94a4-11ed-bfe3-dac502259ad0.png
'''
Author:myfu
Date:2019-08-26
E-mail:myfu@****.com

'''

importpexpect
importsys
importtime
importos
importxlwt
defcisco_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")
foriinrange(0,len(ip)):
child=pexpect.spawn('sshfumy@%s'%ip[i])
fout=open('/root/switch_check/%s.txt'%(name[i][:-1]),'wb+')
child.logfile=fout
ifip[i]=="10.3.240.21":
child.expect("fumy@10.3.240.21'spassword:")
else:
child.expect('password:')
child.sendline("你自己的密码")
child.expect("%s"%name[i])
child.sendline("shenvpower")
child.expect("%s"%name[i])
child.sendline("showprocesscpu|inCPUutilization")
child.expect("%s"%name[i])
child.sendline("shversion|inuptime")
child.expect("%s"%name[i])
child.sendline("showprocessesmemory|inUsed")
child.expect("%s"%name[i])
child.sendline("shenvfan")
child.expect("%s"%name[i])
child.sendline("shlog|inConsolelogging")
child.expect("%s"%name[i])
child.sendline("exit")
time.sleep(3)

file_list=os.listdir("/root/switch_check")

withopen("/root/switch_check/%s"%file_list[0])asf1:
foriinf1:
if"POWER"ini:
power1=i[8:].strip()
if"CPUutilization"ini:
cpu1=i[72:].strip()
if"%suptimeis"%file_list[0][:-4]ini:
uptime1="".join(i[27:].strip().split(","))
if"ProcessorPoolTotal:"ini:
memory1="%.2f%%"%((int(i[38:50].strip())/int(i[21:33].strip()))*100)
if"FANis"ini:
fan1=i[6:].strip()
if"leveldebugging"ini:
log1=i[37:43].strip()

withopen("/root/switch_check/%s"%file_list[1])asf2:
foriinf2:
if"POWER"ini:
power2=i[8:].strip()
if"CPUutilization"ini:
cpu2=i[72:].strip()
if"%suptimeis"%file_list[1][:-4]ini:
uptime2="".join(i[27:].strip().split(","))
if"ProcessorPoolTotal:"ini:
memory2="%.2f%%"%((int(i[38:50].strip())/int(i[21:33].strip()))*100)
if"FANis"ini:
fan2=i[6:].strip()
if"leveldebugging"ini:
log2=i[37:43].strip()

withopen("/root/switch_check/%s"%file_list[2])asf3:
foriinf3:
if"POWER"ini:
power3=i[8:].strip()
if"CPUutilization"ini:
cpu3=i[72:].strip()
if"%suptimeis"%file_list[2][:-4]ini:
uptime3="".join(i[27:].strip().split(","))
if"ProcessorPoolTotal:"ini:
memory3="%.2f%%"%((int(i[38:50].strip())/int(i[21:33].strip()))*100)
if"FANis"ini:
fan3=i[6:].strip()
if"leveldebugging"ini:
log3=i[37:43].strip()

withopen("/root/switch_check/%s"%file_list[3])asf4:
foriinf4:
if"POWER"ini:
power4=i[24:].strip()
if"CPUutilization"ini:
cpu4=i[72:].strip()
if"%suptimeis"%file_list[3][:-4]ini:
uptime4="".join(i[27:].strip().split(","))
if"Total:"ini:
memory4="%.2f%%"%((int(i[21:29].strip())/int(i[6:14].strip()))*100)
if"FANis"ini:
fan4=i[6:].strip()
if"leveldebugging"ini:
log4=i[37:45].strip()


withopen("/root/switch_check/%s"%file_list[4])asf5:
foriinf5:
if"POWER"ini:
power5=i[24:].strip()
if"CPUutilization"ini:
cpu5=i[72:].strip()
if"%suptimeis"%file_list[4][:-4]ini:
uptime5="".join(i[27:].strip().split(","))
if"Total:"ini:
memory5="%.2f%%"%((int(i[21:29].strip())/int(i[6:14].strip()))*100)
if"FANis"ini:
fan5=i[6:].strip()
if"leveldebugging"ini:
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-scheck_test你的邮箱< /root/python/mail.txt "%strf_time)

os.system("find/root/python/-typef-mtime+15-name'SZ_NDC_*'|xargs
m-f")

cisco_check()

mail.txt中的内容即邮件内容:

各位好:



巡检结果详情请看附件。









ps:本邮件由系统自动发送,如有任何问题请联系***





BestWishes

邮件配置

/etc/mail.rc

setfrom=邮箱地址smtp=邮箱服务器smtp-auth-user=邮箱用户名smtp-auth-password=密码smtp-auth=login

定时任务

crontab-e

0017**5/usr/bin/python3/root/python/switch_check.py>/dev/null2>&1#每周五下午5点巡检

最终效果

ba256b1e-94a4-11ed-bfe3-dac502259ad0.png


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自动化
    +关注

    关注

    28

    文章

    5246

    浏览量

    78133
  • python
    +关注

    关注

    53

    文章

    4703

    浏览量

    83704
  • 脚本
    +关注

    关注

    1

    文章

    378

    浏览量

    14706

原文标题:如何使用Python对交换机进行自动化巡检?聪明的网工已经收藏了!

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    工业交换机的特点和作用

      随着工业自动化和智能化的快速发展,工业交换机作为工业通信领域的重要设备,其地位和作用日益凸显。工业交换机不仅为工业自动化提供了稳定、可靠的数据传输通道,还在保障系统安全、提高生产效
    的头像 发表于 06-06 11:52 205次阅读

    工业网络交换机引领现代工厂自动化新潮流

    随着科技的飞速发展,现代工厂正迎来一场前所未有的自动化变革,而工业网络交换机的崭新角色正是这场变革的关键组成部分。本文将深入探讨工业网络交换机与现代工厂自动化的紧密集成,探讨这一集成如
    的头像 发表于 02-06 10:31 331次阅读

    交换机的作用与功能 交换机的基本配置

    交换机(Switch)是计算机网络中常见的一种数据通信设备,它用于在局域网(LAN)内的不同设备之间进行数据的转发和交换交换机通过学习和转发数据帧的方式来实现多个设备之间的通信,并且
    的头像 发表于 02-04 09:17 3006次阅读

    汇聚交换机和核心交换机区别

    汇聚交换机和核心交换机是网络中常见的两种交换机设备,在网络中扮演着不同的角色和功能。虽然它们的主要目标是提供高速、高效的数据交换和数据传输,但在设计和使用上有一些区别。本文将介绍汇聚
    的头像 发表于 01-22 14:32 1901次阅读

    管理型交换机 vs. 非管理型交换机

    在构建复杂的网络中,选择适当的交换机类型很重要。管理型交换机作为智能网络的掌舵者,与非管理型交换机相比,为网络管理提供了更多的灵活性和可控性。本文将深入了解管理型和非管理型交换机的区别
    的头像 发表于 12-25 17:59 816次阅读
    管理型<b class='flag-5'>交换机</b> vs. 非管理型<b class='flag-5'>交换机</b>

    交换机级联是什么意思?交换机级联和堆叠的区别

    交换机的级联是指两台或两台以上的交换机通过一定的方式相互连接,根据需要,多台交换机可以以多种方式进行级联。在较大的局域网例如园区网(校园网)中,多台
    的头像 发表于 12-16 17:01 1581次阅读

    交换机堆叠是什么意思?交换机堆叠的作用

    模块和堆叠电缆进行连接。可堆叠的交换机性能指标中有一个“最大可堆叠数”的参数,它是指一个堆叠单元中所能堆叠的最大交换机数,代表一个堆叠单元中所能提供的最大端口密度。 交换机堆叠的作用主
    的头像 发表于 12-15 17:39 2367次阅读

    核心交换机和普通交换机的区别?

    核心交换机和普通交换机的区别? 核心交换机(Core Switch)是网络中的重要组成部分,与普通交换机(Regular Switch)有许多区别。在这篇文章中,我将详细介绍核心
    的头像 发表于 12-07 14:39 926次阅读

    什么是核心交换机?与普通交换机有何区别?

    什么是核心交换机?与普通交换机有何区别? 核心交换机是一个网络中的重要组成部分,用于处理大量数据流量,连接多个子网和LAN(局域网),并确保顺畅的数据传输和通信。它通常位于网络的核心位置,连接各种
    的头像 发表于 12-07 10:46 1456次阅读

    深度解析工业交换机与工业自动化的紧密关系

    随着工业化程度的不断提高,工业控制系统的自动化程度也在不断增强,工业交换机作为数据通信和网络连接的重要设备,在工业自动化中扮演着关键的角色。工业交换机将不同的工业控制设备连接起来,实现
    的头像 发表于 11-29 09:39 293次阅读

    什么是网管型交换机?怎么选择网管型和非网管型交换机

    什么是非网管型交换机?什么是网管型交换机?怎么选择网管型和非网管型交换机? 非网管型交换机是一种简单的交换设备,其功能和管理能力相对较弱。它
    的头像 发表于 11-09 09:24 1124次阅读

    全千兆以太网交换机怎么用 交换机的基本配置

    交换机可以分为可管理交换机和非管理交换机。可管理式交换机通过Web页面或命令行界面,提供一些诸如VLAN划分、端口速率限制、QoS质量保证设置等高级网络管理功能。
    的头像 发表于 08-09 12:50 3530次阅读

    非网管型交换机和网管交换机有什么区别

    在当今的交换机中,交换机主要可分为非网管交换机 和 网管交换机。那么非网管交换机和网管交换机有什
    的头像 发表于 07-10 17:08 1893次阅读
    非网管型<b class='flag-5'>交换机</b>和网管<b class='flag-5'>交换机</b>有什么区别

    交换机的发展

    从目前以太网交换机市场的总体情况来看,百兆交换机已成为市场主流,千兆交换机市场份额不断加大,而十兆交换机已基本退出了市场。今年以太网交换机
    的头像 发表于 07-07 11:54 548次阅读

    全国产交换机、军用交换机与普通交换机到底有啥区别?

    全国产交换机?军用交换机?普通交换机?傻傻分不清楚?他们到底有什么区别呢? 好嘞,今天小编又为大家来解密了 。   图为:军用交换机(左)普通交换机
    的头像 发表于 07-07 11:08 1444次阅读
    全国产<b class='flag-5'>交换机</b>、军用<b class='flag-5'>交换机</b>与普通<b class='flag-5'>交换机</b>到底有啥区别?