华为服务器IBMC批量巡检代码

不想你离开。 提交于 2019-12-03 03:53:37
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 webdriverimport mathimport datetimeimport xlsxwriterimport 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()
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!