背景
OPmanager监控功能强大,但在制作运维月报中却发现每次只能手工导出报表,用OP自带的计划任务要么导出空表、要么导出了的是所有系统,而非指定系统。下面介绍一种自动导出报表的方式
准备工作
1、首先还要根据需求创建系统用户,比如4个系统每个系统都要导出报表,则要创建4个用户,每个用户权限只有各自系统;
2、在首页添加一个仪表板,选定需要导出的报表内容,如CPU、内存、硬盘使用率排行,点击下一步后选择查看用户,默认会勾选当前登录用户,之后完成创建即可。
选择窗件3、选择一个仪表板,点击编辑按钮。由于是月报需要的图表,将时间范围设置为“上月”,时间段设置为业务时段
CPU排行窗件 编辑窗件4、现在CPU的窗件已经是我们想要的报表了,点击嵌入窗件,可以看到一个url,使用这个url即可直接访问到该窗件,注意“OPmanager-12”要替换成IP地址
设置时间范围后的窗件 窗件URL自动获取报表
用selenium访问URL并截图,就可实现报表自动获取的功能了。
虽然显示“不需要登录就能访问”,但如果新开一个浏览器访问窗件的URL,会以admin权限来显示内容,即全系统的CPU排行。于是需要先登录用户,再访问URL才可以。
代码实现
1、登陆OP
loginurl = 'http://192.168.4.230:8060/apiclient/ember/Login.jsp'
option=webdriver.ChromeOptions()
option.add_argument('headless') #后台静默执行
driver = webdriver.Chrome(path + r"\chromedriver.exe",options=option)
driver.get(loginurl)
time.sleep(3)
userinput = driver.find_element_by_id('userName')
pwdinput = driver.find_element_by_id('password')
userinput.click()
userinput.clear()
userinput.send_keys('你的用户名') #输入用户名
time.sleep(1)
pwdinput.click()
pwdinput.clear()
pwdinput.send_keys('密码') #输入密码
time.sleep(1)
driver.find_element_by_id('btnSubmit').click() #点击登录
2、获取报表并保存
urlcpu = 'http://192.168.4.230:8060/embedView.do?type=widget&widgetID=3303&authKey=22d445b5-0ff5-492c-89db-b8b6a4b9b6d5'
driver.get(urlcpu) #访问CPU窗件
time.sleep(30) #要等一会才能刷出图像
driver.get_screenshot_as_file('cpu.png')
print("%s:截图成功!!!")
driver.quit()
网友评论