RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python網(wǎng)絡(luò)設(shè)備巡檢(異常自動(dòng)報(bào)警)

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來(lái)源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2022-12-29 09:09 ? 次閱讀

思想

1、python抓取交換機(jī)信息
2、提取需要的檢查結(jié)果,并寫(xiě)入excel表格
3、如果某一檢查結(jié)果超出閾值或不符合某一關(guān)鍵字,自動(dòng)發(fā)送報(bào)警郵件
4、每十分鐘執(zhí)行一次python代碼

代碼

抓取交換機(jī)信息

importpexpect
importsys
importdatetime
importos

#today=datetime.date.today().strftime('%Y%m%d')
print(3)
ip='x.x.x.x'
passwd='xxxx'
txt='F5hexin.txt'
name=''
name1="----More----"
child=pexpect.spawn('telnet%s'%ip)
fout=open('/root/F5Core/Core/'+txt,'wb+')
child.logfile=fout
child.expect('login:')
child.sendline("admin")
child.expect('(?i)ssword:')
child.sendline("%s"%passwd)
child.expect("%s"%name)
child.sendline("displaypower")
child.expect("%s"%name)
child.sendline("displayversion")
foriinrange(20):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displayenvironment")
break
foriinrange(20):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displayfan")
break
foriinrange(10):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displaycpu-usage")
break
foriinrange(10):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displaymemory")
break
foriinrange(10):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displayinterfacebrief")
break
foriinrange(10):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("dislogbuffer")
break
foriinrange(50):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displayiprouting-table")
break
foriinrange(50):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("displayirflink")
break
foriinrange(3):
index=child.expect([name1,"%s"%name])
if(index==0):
child.send("")
else:
child.sendline("quit")
sys.exit()

代碼

匹配閾值,報(bào)警

#coding:utf-8
importpymssql
importxlwt
importdatetime
fromxlwtimport*
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
importsmtplib
importdatetime
fromemailimportencoders
fromemail.mime.imageimportMIMEImage
fromemail.mime.baseimportMIMEBase
importre
importxlrd

file=open('/root/F5Core/Core/F5hexin.txt','r+')
listlist=file.readlines()
i=1
forlineinlistlist:#匹配檢查結(jié)果,超出閾值,把結(jié)果換成error。
if'displaypower'inline:
power11=listlist[i+6][8:15].strip()
ifpower11!='Normal':
power11='Error'
print(power11)
power12=listlist[i+8][8:15].strip()
ifpower12!='Normal':
power12='Error'
print(power11)
power13=listlist[i+10][8:15].strip()
ifpower13!='Normal':
power13='Error'
print(power11)
power14=listlist[i+12][8:15].strip()
ifpower14!='Normal':
power14='Error'
print(power11)
power21=listlist[i+28][8:15].strip()
ifpower21!='Normal':
power21='Error'
print(power11)
power22=listlist[i+30][8:15].strip()
ifpower22!='Normal':
power22='Error'
print(power11)
power23=listlist[i+32][8:15].strip()
ifpower23!='Normal':
power23='Error'
print(power23)
power24=listlist[i+34][8:15].strip()
ifpower24!='Normal':
power24='Error'
print(power24)
if'MPU(M)Chassis1Slot0:'inline:
time11=listlist[i+1][9:].strip()
print(time11)
if'LPUChassis1Slot2:'inline:
time12=listlist[i+1][9:].strip()
print(time12)
if'MPU(S)Chassis2Slot0:'inline:
time13=listlist[i+1][9:].strip()
print(time13)
if'LPUChassis2Slot2:'inline:
time14=listlist[i+1][9:].strip()
print(time14)
if'displayenvironment'inline:
environment11=listlist[i+10][26:29].strip()+''+listlist[i+12][26:29].strip()
environment12=listlist[i+14][26:29].strip()+''+listlist[i+16][26:29].strip()+''+listlist[i+18][26:29].strip()
environment13=listlist[i+46][26:29].strip()+''+listlist[i+51][26:29].strip()
environment14=listlist[i+53][26:29].strip()+''+listlist[i+55][26:29].strip()+''+listlist[i+57][26:29].strip()
ifint(listlist[i+10][26:29].strip())>70:
environment11='Error'
print(environment11)
ifint(listlist[i+12][26:29].strip())>70:
environment11='Error'
print(environment11)
ifint(listlist[i+14][26:29].strip())>70:
environment12='Error'
print(environment12)
ifint(listlist[i+16][26:29].strip())>70:
environment12='Error'
print(environment12)
ifint(listlist[i+18][26:29].strip())>70:
environment12='Error'
print(environment12)
ifint(listlist[i+46][26:29].strip())>70:
environment13='Error'
print(environment13)
ifint(listlist[i+51][26:29].strip())>70:
environment13='Error'
print(environment13)
ifint(listlist[i+53][26:29].strip())>70:
environment14='Error'
print(environment14)
ifint(listlist[i+55][26:29].strip())>70:
environment14='Error'
print(environment14)
ifint(listlist[i+57][26:29].strip())>70:
environment14='Error'
print(environment14)
if'displayfan'inline:
fana11=listlist[i+6][-8:].strip()
iffana11!='Normal':
fana11='Error'
print(fana11)
fana12=listlist[i+26][-8:].strip()
iffana12!='Normal':
fana12='Error'
print(fana12)
fana13=listlist[i+53][-8:].strip()
iffana13!='Normal':
fana13='Error'
print(fana13)
fana14=listlist[i+73][-8:].strip()
iffana14!='Normal':
fana14='Error'
print(fana14)
if'Chassis1Slot0CPU0CPUusage:'inline:
cpu11=listlist[i+5][6:10].strip()
ifint(re.sub('%','',cpu11))>30:
cpu11='Error'
print(cpu11)
if'Chassis1Slot2CPU0CPUusage:'inline:
cpu12=listlist[i+5][6:10].strip()
ifint(re.sub('%','',cpu12))>30:
cpu12='Error'
print(cpu12)
if'Chassis2Slot0CPU0CPUusage:'inline:
cpu13=listlist[i+5][6:10].strip()
ifint(re.sub('%','',cpu13))>30:
cpu13='Error'
print(cpu13)
if'Chassis2Slot2CPU0CPUusage:'inline:
cpu14=listlist[i+8][6:10].strip()
ifint(re.sub('%','',cpu14))>30:
cpu14='Error'
print(cpu14)
if'displaymemory'inline:
memory11=listlist[i+8][-6:].strip()
iffloat(re.sub('%','',memory11))530:
log11='Error'
print(log11)
if'Routes:'inline:
routingtable11=line[-5:].strip()
ifint(routingtable11)

自動(dòng)執(zhí)行代碼

Linux crontab

5759153e-8708-11ed-bfe3-dac502259ad0.png

結(jié)果

1、正常巡檢結(jié)果

57696e2a-8708-11ed-bfe3-dac502259ad0.png

2、出現(xiàn)異常報(bào)警的巡檢結(jié)果

5792955c-8708-11ed-bfe3-dac502259ad0.png57ae711e-8708-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    21

    文章

    2637

    瀏覽量

    99529
  • 網(wǎng)絡(luò)設(shè)備

    關(guān)注

    0

    文章

    315

    瀏覽量

    29636
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627

原文標(biāo)題:Python網(wǎng)絡(luò)設(shè)備巡檢(異常自動(dòng)報(bào)警)

文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    外網(wǎng)訪問(wèn)家里的網(wǎng)絡(luò)設(shè)備

    網(wǎng)絡(luò)設(shè)備
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2023年07月17日 20:06:18

    網(wǎng)絡(luò)設(shè)備選擇技巧

    。為什么會(huì)這樣呢?使用過(guò)計(jì)算機(jī)的讀者都知道,當(dāng)CPU風(fēng)扇散熱不佳時(shí)計(jì)算機(jī)系統(tǒng)經(jīng)常會(huì)死機(jī)或自動(dòng)重啟,網(wǎng)絡(luò)設(shè)備更是如此,高速運(yùn)行的CPU與核心組件需要在一個(gè)合適的工作環(huán)境下運(yùn)轉(zhuǎn),溫度太高會(huì)使它們損壞。設(shè)備散熱工作
    發(fā)表于 04-08 09:34

    變電站巡檢管理系統(tǒng)

    :電纜接頭接觸良好、觀察電纜接頭有無(wú)發(fā)熱放電現(xiàn)象)等,并輸入設(shè)備實(shí)際運(yùn)行狀態(tài)及參數(shù),或選擇相應(yīng)分類(lèi)(正常/異常,良好/發(fā)熱),提交即可。如設(shè)備超標(biāo)、異常監(jiān)控中心會(huì)
    發(fā)表于 11-21 11:10

    HZD-HX型微機(jī)智能自動(dòng)巡檢控制設(shè)備

    HZD-HX型微機(jī)智能自動(dòng)巡檢控制設(shè)備技術(shù)參數(shù) 1、對(duì)于消防水泵來(lái)說(shuō),普遍存在一個(gè)問(wèn)題:那就是在建筑物發(fā)生火災(zāi)時(shí),有相當(dāng)多的消防泵在接到啟動(dòng)信號(hào)后不能啟動(dòng),沒(méi)有水無(wú)法滅火,延誤了滅火時(shí)機(jī),給國(guó)家財(cái)產(chǎn)
    發(fā)表于 05-26 14:06

    各類(lèi)網(wǎng)絡(luò)設(shè)備

    ` 網(wǎng)絡(luò)設(shè)備,銳捷,艾泰,D-link,華為,H3C,思科,韓電,安普`
    發(fā)表于 11-29 11:15

    Linux常用網(wǎng)絡(luò)設(shè)備

    網(wǎng)絡(luò)設(shè)備是計(jì)算機(jī)體系結(jié)構(gòu)中必不可少的一部分,處理器如果想與外界通信,通常都會(huì)選擇網(wǎng)絡(luò)設(shè)備作為通信接口。眾所周知,在 OSI(Open Systems Interconnection,開(kāi)放網(wǎng)際互連)中,網(wǎng)絡(luò)被劃分為七個(gè)層次,從下到
    發(fā)表于 07-25 07:37

    消防巡檢控制柜專(zhuān)用電氣元件:消防泵自動(dòng)巡檢控制器

    消防智能數(shù)字巡檢裝置,又稱(chēng)消防自動(dòng)巡檢控制柜。巡檢為低頻巡檢巡檢時(shí)電機(jī)轉(zhuǎn)速為300轉(zhuǎn)/分,水系
    發(fā)表于 11-08 17:19

    網(wǎng)絡(luò)設(shè)備監(jiān)管系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    網(wǎng)絡(luò)設(shè)備監(jiān)管是指對(duì)IP 網(wǎng)絡(luò)中的關(guān)鍵設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控和管理,使網(wǎng)絡(luò)管理員對(duì)網(wǎng)絡(luò)設(shè)備的使用情況有更為深入的了解。在研究分析
    發(fā)表于 06-23 13:33 ?24次下載

    家用網(wǎng)絡(luò)設(shè)備簡(jiǎn)介

    家用網(wǎng)絡(luò)設(shè)備簡(jiǎn)介 就在幾年前,家用網(wǎng)絡(luò)設(shè)備還相當(dāng)簡(jiǎn)單。使用一根直連電纜、一部網(wǎng)絡(luò)集線器或以太網(wǎng)路由器,您可以將兩部或多部計(jì)算機(jī)連接在一起,共享外設(shè)、
    發(fā)表于 08-05 10:26 ?1058次閱讀

    基于正則表達(dá)式匹配的網(wǎng)絡(luò)設(shè)備自動(dòng)管理系統(tǒng)_李林廣

    基于正則表達(dá)式匹配的網(wǎng)絡(luò)設(shè)備自動(dòng)管理系統(tǒng)_李林廣
    發(fā)表于 03-16 08:50 ?0次下載

    python如何捕獲異常和主動(dòng)拋出異常

    python如何主動(dòng)拋出異常和捕獲異常 1. 如何拋出異常? 異常的產(chǎn)生有兩種來(lái)源: 一種是程序自動(dòng)
    的頭像 發(fā)表于 03-04 17:09 ?9826次閱讀

    Python寫(xiě)SecureCRT批量登錄/巡檢網(wǎng)絡(luò)設(shè)備腳本

    因?yàn)橛屑s200臺(tái)的網(wǎng)絡(luò)設(shè)備需要每天登錄巡檢、查看配置、保存配置、定期更改密碼(每周改一次),如果都手動(dòng)去登錄、配置將是非常耗費(fèi)時(shí)間和人力的,所以就有了整理出腳本的想法。查看了網(wǎng)上大多是VBS編寫(xiě)的腳本,我對(duì)VBS不熟悉,剛好前段時(shí)間初步學(xué)習(xí)了
    的頭像 發(fā)表于 12-28 09:32 ?4534次閱讀

    如何使用Python通過(guò)SNMP監(jiān)控網(wǎng)絡(luò)設(shè)備?

    前段時(shí)間,為了實(shí)現(xiàn)自動(dòng)巡檢,我開(kāi)發(fā)了自動(dòng)巡檢工具,由于我的系統(tǒng)設(shè)備版本比較多,所以我是分別開(kāi)發(fā)的客戶(hù)端程序,服務(wù)端使用dll文件與客戶(hù)端
    的頭像 發(fā)表于 01-09 10:38 ?1285次閱讀

    使用Python批量連接華為網(wǎng)絡(luò)設(shè)備

    隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大和設(shè)備數(shù)量的增加,手動(dòng)配置和管理每臺(tái)網(wǎng)絡(luò)設(shè)備變得越來(lái)越不現(xiàn)實(shí)。因此,自動(dòng)化工具和腳本變得尤為重要。Python語(yǔ)言以其簡(jiǎn)潔
    的頭像 發(fā)表于 08-12 17:48 ?449次閱讀

    Juniper設(shè)備常用的巡檢命令介紹

    網(wǎng)絡(luò)管理中,設(shè)備巡檢是確保網(wǎng)絡(luò)設(shè)備運(yùn)行正常、性能最佳的重要環(huán)節(jié)。Juniper Networks設(shè)備廣泛應(yīng)用于各類(lèi)
    的頭像 發(fā)表于 08-12 18:14 ?623次閱讀
    RM新时代网站-首页