華為服務器IBMC批量巡檢代碼


selenium需要下載Chrome驅動webdriver,具體下載的版本根據自己的谷歌瀏覽器版本進行下載,然后
將下載好的驅動webdriver放到自己python解釋器同級目錄中即可,下載地址http://npm.taobao.org/mirrors/chromedriver/

此代碼可用於華為服務器批量巡檢,前提要在腳本存放的同級目錄下建立一個ipList.txt文件存儲
服務器管理IP地址格式為每行一個地址(即imbc的管理地址),腳本將會遍歷所有的IP地址,這里的賬號密碼默認為華為
服務器的原始賬號密碼(即Administrator和Admi@9000),如有需要可自行修改代碼。
坑點:服務器登錄加載的時候需要等待一段時間,剛開始使用driver.implicitly_wait()函數進
行隱性等待,發現會有獲取數據的值為空值的現象,排查發現是因為華為IBMC界面元素的加載跟數據
的加載是不同步的,只能選擇強制等待time.sleep()的方法了。

from selenium import webdriver
import math
import datetime
import xlsxwriter
import time

# 規定巡檢表
today=str(datetime.date.today())
workbook=xlsxwriter.Workbook('%s華為巡檢報告.xlsx'%today)
worksheet=workbook.add_worksheet('華為巡檢')

# 巡檢項目
title=[
U'IP地址',
U'序列號',
U'型號',
U'BMC版本',
U'BIOS版本',
U'風扇狀態',
U'電源狀態',
U'磁盤狀態',
U'CPU狀態',
U'RAID狀態',
U'緊急告警數',
U'嚴重告警數',
U'輕微告警數'
]

#寫入標題
worksheet.write_row('A1',title)

#返回分類列表(供下面函數調用)
def listCheck(list_tr,*args):
list=[]
for i in list_tr:
for j in args:
if i.startswith(j):
list.append(i)
return list

#檢查分類列表
def okCheck(list):
for i in list:
if i.split(' ')[-7] !='OK':
return 'NO'
break
return 'OK'

#主程序
if __name__ == '__main__':
with open('ipList.txt','r',encoding='utf8') as f:
iplist=f.readlines()
rowNum=2
for ip in iplist:

# 創建webdriver對象
driver=webdriver.Chrome()
#登錄華為服務器BMC
driver.get('https://%s/login.html'%ip)
driver.find_element_by_id('ipUserName').send_keys('Administrator')
driver.find_element_by_id('iptPassword').send_keys('Admin@9000')
time.sleep(1)
driver.find_element_by_id('btnLogin').click()

#進入子iframe
driver.switch_to.frame('rightMid')

#IP地址
ipaddr=driver.find_element_by_id('txtBMCIp').text
#序列號
xuliehao=driver.find_element_by_id('txtSequence').text
#型號
xinghao=driver.find_element_by_id('txtProductNameInfo').text
# iBMC地址
ibmc=driver.find_element_by_id('txtBMCFirm').text
#bios固件版本
bios=driver.find_element_by_id('txtBiosFirm').text
# 緊急告警數量
jinji=driver.find_element_by_id('txtCritalAlarms').text
#嚴重告警
yanzhong=driver.find_element_by_id('txtMajorAlarms').text
#輕微告警
qingwei=driver.find_element_by_id('txtMinorAlarms').text

#返回主Document
driver.switch_to.default_content()

#轉到另外一個子iframe
driver.find_element_by_id('menu_SENSOR').click()
time.sleep(3)
driver.switch_to.frame('rightMid')

#獲取門限傳感器數目
strr=driver.find_element_by_id('tinyPaginationTotalRecords').text
num=int(strr[5:])

#將門限傳感器內容寫入列表
list_tr=[]
for i in range(math.ceil(num/10)): #遍歷傳感器頁數
for j in driver.find_elements_by_xpath('//*[@id="DataTables_Table_3"]/tbody/tr'):
list_tr.append(j.text)
driver.find_element_by_css_selector("[class='ti ti-angle-right']").click()

#cpu狀態
cpu=okCheck(listCheck(list_tr,'CPU'))
#風扇狀態
fan=okCheck(listCheck(list_tr,'FAN'))
#raid狀態
raid=okCheck(listCheck(list_tr,'RAID','Raid'))
#電源狀態
power=okCheck(listCheck(list_tr,'Power'))
#磁盤狀態
disk=okCheck(listCheck(list_tr,'Disk'))


#數據列表
data=[
ipaddr,
xuliehao,
xinghao,
ibmc,
bios,
fan,
power,
disk,
cpu,
raid,
jinji,
yanzhong,
qingwei
]

#拼接行號
row='A'+str(rowNum)
#將內容寫進行號指定的行
worksheet.write_row(row,data)
rowNum+=1
#刪除頁面緩存
driver.delete_all_cookies()
driver.close()
f.close()
workbook.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM