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()使用plupload绕过服务器,批量上传图片到又拍云

本文最初发布于我的个人博客:Jerry的乐园 综述 论坛或者贴吧经常会需要分享很多图片,上传图片比较差的做法是上传到中央服务器上,中央服务器再转发给静态图片服务器.而这篇文章讲介绍如何使用pluplo ...

在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs

ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs 第一部分:使用ssh key 实现服务器间的免密码交互登陆 步骤1: 安装openssh-clients [root@001 ...

艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布

艾伦 Visual Studio 批量自动化代码操作工具 以下简称--艾伦工具箱. 艾伦工具箱是一个多文件批量处理插件,目的是为了广大开发者提高开发效率,减少项目代码规范化审计,缩短开发者的项目开发周 ...

解放双手:如何在本地调试远程服务器上的Node代码

写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具.通过IDE(如vscode).通过node-inspector,三者本质上差不多.本文着重点在于介绍 如何在本地通过nod ...

Android JUnit Test——批量运行测试代码

转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ Android测试三要素 写Android测试用例有三要素,一是我们用的“安卓模拟器device” ...

【转】- 使用T4模板批量生成代码

前言 之前在 “使用T4模板生成代码 - 初探” 文章简单的使用了T4模板的生成功能,但对于一个模板生成多个实例文件,如何实现这个方式呢?无意发现一个解决方案 “MultipleOutputHelpe ...

如何使用CodeSmith批量生成代码(原创系列教程)

在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做 ...

随机推荐

php大力力 [014节] 八杆子打不着的非技术文章,哈哈

今天似乎是个值得纪念的日子 一个创业失败者的忠告:请不要再参加创业活动 PHP mysql_connect() 函数 mysql默认用户 随意发几个链接,没任何意义

PL/SQL Developer 连接Oracle数据库详细配置方法

PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...

VisualSVN Server安装过程

 运行VisualSVN-Server-2.7.3.msi程序, 如下图 点击Next, 下一步 选中 I accept选项, 点击Next, 下一步 选择默认配置, 服务和控制台组件方式, 点击 ...

Linux----------mysql基础

目录 一.数据库介绍 1.1 数据库的优点 1.2 数据库的基本功能 1.3数据库的类型 1.4 关系型数据的组成 1.5 关系型数据库的常用组件 1.6 SQL语句 1.7 mysql命令使用 1. ...

Glide图片加载框架小bug

如上一段加载图片的代码,本身是没问题的,后来测试发现有情况不显示url对应的图片,而一直显示加载超时的图片 修改如下: 将with()方法的上下文context改为图片的imageView.getCo ...

springMVC集成CXF后调用已知的wsdl接口

本文转载自:https://www.cnblogs.com/xiaochangwei/p/5400303.html 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webServi ...

35-THREE.JS 多面体

服务器ibmc无法加载js文件,华为服务器IBMC批量巡检代码相关推荐

  1. 服务器ibmc无法加载js文件,weUI应用之JS常用信息提示弹层的封装

    weUI应用,自己用JS封装了几个常用的信息提示的弹层 测试页面的代码在后面有贴出 几个弹层如下图 HTML页面代码: weUI-test 测试 $(function(){ // //提示弹层,取消关 ...

  2. 服务器ibmc无法加载js文件,引入网络js

    引入网络js 内容精选 换一换 安装完操作系统后,需在当前iBMC远程管理界面中配置网卡IP地址才能远程连接服务器,配置方法如下.vi /etc/sysconfig/network-scripts/i ...

  3. 异步加载js文件的方法总结

    方法一,jQuery.getScript HTML 代码: 代码如下 复制代码 <button id="go">Run</button> <div c ...

  4. php动态页面加载慢,通过动态加载JS文件提升网站访问速度

    相对与HTML,CSS,javascript是最影响浏览器性能的,因为浏览器在遇到<script>标签时,必须等待js代码下载和执行完毕后再执行后面的内容,因此当页面中js文件过多时,网站 ...

  5. js如何动态的加载js文件

    在这个地方我说的动态的加载js文件是通过调用函数来加载js文件,我们在这个地方通过一个简单的小例子来实现 首先创建3个文件分别为:test1.html,test1.js,demo.js test1.j ...

  6. 网页性能优化之异步加载js文件

    一个网页的有很多地方可以进行性能优化,比较常见的一种方式就是异步加载js脚本文件.在谈异步加载之前,先来看看浏览器加载js文件的原理. 浏览器加载 JavaScript 脚本,主要通过<scri ...

  7. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  8. javascript:重新加载js文件

    //重新加载js文件         function loadJs(file) {             var head = $("head").remove("s ...

  9. JavaScript动态加载js文件

    /********************************************************************** JavaScript动态加载js文件* 说明:* 之前没 ...

最新文章

  1. 图像与数据类型的对应,以及如何显示
  2. 批量修改数据映射_Docker 数据卷操作「Docker 系列-6」
  3. 软件工程——求二维数组所有子矩阵的和的最大值
  4. 443 k8s配置开启nginx_SSL证书不会安装配置?手把手教会你,3步搞定
  5. 【软件构造】第二章 软件构建的过程和工具(2)
  6. 实验三 图的操作与实现
  7. MCU提高ADC采样精度的几种方案
  8. java实验册_Java实验报告册Java实验报告册.doc
  9. 自制 移动端 纯原生 Slider滑动插件
  10. (88)FPGA写文件激励(fwrite)
  11. css3 下拉缩放显示定位导航
  12. JS 用window.open()函数详解
  13. java的安装包下载 百度云_Java开发相关安装包网盘下载链接分享
  14. Vue插件-json编辑器
  15. 3D打印笔 画出模型
  16. OSI七层模型与TCP/IP四层与五层模型详解
  17. 直系同源基因分析(orthofinder方法)
  18. c语言1000万位圆周率,如何设计C语言程序输出圆周率小数点后的1000位?请大侠出手啊。...
  19. android 常用机型尺寸_安卓手机屏幕多大合适?6.4英寸是“黄金尺寸”吗?
  20. 【安信可NB-IoT模组EC系列AT指令应用笔记④】将设备位置接入阿里云地图,实现空间数据可视化

热门文章

  1. ESXi 直通网卡重启后依然提示“已启用/需要重新引导”的解决方法
  2. 《程序员的自我修养》第4章---静态链接
  3. 熵、信息增益、信息增益率
  4. 信息熵、信息增益、信息增益比
  5. 班级页面设计——【1-登陆注册页面】
  6. Linux驱动——mmc host controller(九)
  7. mysql 1118_mysql 错误代码:1118解决方法详解
  8. TeamCity的安装(docker) 构建 和 部署 (1)
  9. Java“长征”路起航
  10. 利用c语言编辑--钟表模拟程序(表针形式)