一、目的和測(cè)試結(jié)果:
(1). SSH登錄到各個(gè)交換機(jī)收集軟件版本、CPU、內(nèi)存利用率和硬件狀態(tài)信息。
(2). 生成如下的excel表格文件展示。
二、環(huán)境準(zhǔn)備:
(1). 使用華為的eNSP模擬器來(lái)模擬真實(shí)設(shè)備,本機(jī)IP169.254.94.30,兩臺(tái)交換機(jī)的IP分別是169.254.94.31和169.254.94.32。
(2). 由于使用了第三方模塊netmiko和xlwt模塊,需要提前使用以下命令安裝。
pipinstallnetmiko pipinstallxlwt
(3). 創(chuàng)建一個(gè)名稱為:ip_list.txt 的文件用來(lái)存放巡檢的設(shè)備IP。
169.254.94.31 169.254.94.32
三、python 巡檢華為交換機(jī)腳本:
#-*-coding:utf-8-*- fromnetmiko.huawei.huaweiimportHuaweiSSH fromnetmikoimportNetMikoTimeoutException fromnetmikoimportNetMikoAuthenticationException fromgetpassimportgetpass importre importio importxlwt defmain(): """ 主函數(shù) """ #讓用戶輸入ssh用戶名密碼 username=input('請(qǐng)輸入ssh用戶名:') password=getpass('請(qǐng)輸入ssh密碼:') #打開(kāi)ip_list.txt文件獲取IP列表 ip_list=open('ip_list.txt','r') ip_addr=ip_list.readlines() ip_list.close() cmd_line=['displayversion','displaycpu-usage','displaymemory-usage','displaydevice'] #創(chuàng)建一個(gè)workbook設(shè)置編碼 workbook=xlwt.Workbook(encoding='utf-8') #創(chuàng)建一個(gè)worksheet worksheet=workbook.add_sheet('MyWorksheet') #初始化表格 worksheet.write(0,0,label="交換機(jī)IP") worksheet.write(0,1,label="交換機(jī)名稱") worksheet.write(0,2,label="軟件版本") worksheet.write(0,3,label="CPU利用率") worksheet.write(0,4,label="內(nèi)存利用率") worksheet.write(0,5,label="硬件狀態(tài)") hang=0 lie=0 #遍歷ip列表用來(lái)生成迭代器 foripiniter(ip_addr): print('') print('本次巡檢的設(shè)備IP:'+ip) try: S5720={ 'device_type':'huawei', 'ip':ip, 'username':username, 'password':password, } #實(shí)例化HuaweiSSH net_connect=HuaweiSSH(**S5720) #print("恭喜,成功登錄") #print("設(shè)備名:"+str(net_connect.find_prompt().strip('<>'))) ip_str=(ip) hang=hang+1 #初始化表格列 lie=0 worksheet.write(hang,lie,label=ip_str) lie=lie+1 worksheet.write(hang, lie, label=net_connect.find_prompt().strip('<>')) forcmdiniter(cmd_line): cmd_result=net_connect.send_command(cmd) regex_str=[] if'VRP(R)software'incmd_result: regex_str='(w*dd.*)' version=(re.search(regex_str,cmd_result)) lie=lie+1 worksheet.write(hang, lie, label=version.group().strip('()')) cmd_result='' if'CPU'incmd_result: regex_str='d*.d*.\%' cpu_usage=(re.search(regex_str,cmd_result)) lie=lie+1 worksheet.write(hang, lie, label=cpu_usage.group().strip('')) cmd_result='' if'Memory'incmd_result: regex_str='d*.\%' memory=(re.search(regex_str,cmd_result)) lie=lie+1 worksheet.write(hang,lie,label=memory.group()) cmd_result='' if'Device'incmd_result: if'Abnormal'incmd_result: lie=lie+1 worksheet.write(hang,lie,label=u"Abnormal") elif'WrongType'incmd_result: lie=lie+1 worksheet.write(hang,lie,label=u"WrongType") elif'Unregistered'incmd_result: lie=lie+1 worksheet.write(hang,lie,label=u"Unregistered") elif'Off'incmd_result: lie=lie+1 worksheet.write(hang,lie,label=u"Off") elif'Offline'incmd_result: lie=lie+1 worksheet.write(hang,lie,label=u"Offline") else: lie=lie+1 worksheet.write(hang,lie,label=u"Normal") cmd_result='' net_connect.disconnect() except(EOFError,NetMikoTimeoutException): print('無(wú)法連接設(shè)備') netmikotimeout=(u'無(wú)法連接設(shè)備'+ip) hang=hang+1 lie=0 worksheet.write(hang,lie,label=netmikotimeout) except(EOFError,NetMikoAuthenticationException): print('用戶名密碼錯(cuò)誤!') netmikotuehenticattion=(u'用戶名密碼錯(cuò)誤'+ip) hang=hang+1 lie=0 worksheet.write(hang,lie,label=netmikotimeout) workbook.save('xunjian.xls') if__name__=='__main__': main()
四、測(cè)試過(guò)程:
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
10853瀏覽量
211549 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84621 -
華為交換機(jī)
+關(guān)注
關(guān)注
0文章
13瀏覽量
6307
原文標(biāo)題:python 巡檢華為交換機(jī)
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論