介紹:
在上一篇博客中寫了關(guān)于zabbix配置郵箱報(bào)警功能,但由于配置過程十分繁瑣,這里我寫了一個(gè)自動(dòng)化配置的腳本(python selenium模塊)。直接運(yùn)行腳本會(huì)提高很多效率!
實(shí)驗(yàn)環(huán)境:
1.python3.7
2.selenium 模塊
3.PyCharm 開發(fā)軟件
實(shí)驗(yàn)步驟
一、zabbix服務(wù)端和代理端安裝,配置
溫馨提示:具體步驟參考博客 https://blog.51cto.com/13760351/2431576
二、zabbix服務(wù)web配置郵箱報(bào)警
編寫selenium自動(dòng)化腳本
from selenium import webdriver
import time
driver = webdriver.Chrome()
#Windows窗口最大化
driver.maximize_window()
# 登錄賬戶密碼
driver.get("http://192.168.0.112/zabbix/")
driver.find_element_by_xpath("http://input[@type='text']").send_keys("Admin")
driver.find_element_by_id("password").send_keys("zabbix")
driver.find_element_by_id("enter").click()
# 創(chuàng)建媒體類型
driver.get("http://192.168.0.112/zabbix/zabbix.php?action=mediatype.edit")
選擇"腳本"
driver.find_element_by_id("type").click()
driver.find_element_by_xpath('//*[@id="type"]/option[2]').click()
名稱
driver.find_element_by_id("description").send_keys("mail-test")
腳本名稱
driver.find_element_by_id("exec_path").send_keys("mailx.sh")
# 添加腳本參數(shù)
driver.find_element_by_id("exec_param_add").click()
driver.find_element_by_id("exec_params_0_exec_param").send_keys("{ALERT.SENDTO}")
driver.find_element_by_id("exec_param_add").click()
driver.find_element_by_id("exec_params_1_exec_param").send_keys("{ALERT.SUBJECT}")
driver.find_element_by_id("exec_param_add").click()
driver.find_element_by_id("exec_params_2_exec_param").send_keys("{ALERT.MESSAGE}")
# 添加完成
driver.find_element_by_id("add").click()
# 設(shè)置報(bào)警媒介
driver.get("http://192.168.0.112/zabbix/users.php?form=update&userid=1")
# 設(shè)置中文
driver.find_element_by_id("lang").click()
driver.find_element_by_xpath('// [@id="lang"]/option[3]').click()
# 報(bào)警媒介
driver.find_element_by_id("tab_mediaTab").click()
# 添加
driver.find_element_by_xpath('// [@id="userMediaFormList"]/li/div[2]/div/button').click()
time.sleep(1)
# 選擇類型
driver.find_element_by_xpath('// [@id="mediatypeid"]/option[3]').click()
# 收件郵箱
driver.find_element_by_id("sendto").send_keys("1451772664@qq.com")
# 添加
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[3]/button[1]').click()
time.sleep(1)
# 更新
driver.find_element_by_id("update").click()
# 配置操作-動(dòng)作
driver.get('http://192.168.0.112/zabbix/actionconf.php?ddreset=1')
# 刪除默認(rèn)模板
driver.find_element_by_id("g_actionid_3").click()
driver.find_element_by_xpath('// [@id="action_buttons"]/button[3]').click()
time.sleep(1)
#確認(rèn)對(duì)話框
dig_confirm = driver.switch_to.alert
dig_confirm.accept()
time.sleep(1)
#動(dòng)作模塊
driver.get("http://192.168.0.112/zabbix/actionconf.php?eventsource=0&form=%E5%88%9B%E5%BB%BA%E5%8A%A8%E4%BD%9C")
#名稱
driver.find_element_by_id("name").send_keys("mailx")
#新的觸發(fā)條件
driver.find_element_by_id('new_condition_conditiontype').click()
driver.find_element_by_xpath('// [@id="new_condition_conditiontype"]/option[3]').click()
driver.find_element_by_xpath('// [@id="actionTab"]/ul/li[4]/div[2]/div/table/tbody/tr[1]/td/div[3]/div[2]/button').click()
time.sleep(1)
driver.find_element_by_id('item_2').click()
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[3]/button[1]').click()
driver.find_element_by_xpath('//*[@id="actionTab"]/ul/li[4]/div[2]/div/table/tbody/tr[2]/td/button').click()
知識(shí)點(diǎn)講解: 確認(rèn)對(duì)話框部分,是沒有直接元素可以定位的,只能使用固定"dig_confirm"方法
#操作
driver.find_element_by_id('tab_operationTab').click()
#默認(rèn)時(shí)間
driver.find_element_by_id('esc_period').clear()
driver.find_element_by_id('esc_period').send_keys("60")
#默認(rèn)標(biāo)題
driver.find_element_by_id('def_shortdata').clear()
driver.find_element_by_id('def_shortdata').send_keys("{TRIGGER.STATUS}:{TRIGGER.NAME}")
#操作內(nèi)容
driver.find_element_by_id('def_longdata').clear()
driver.find_element_by_id('def_longdata').send_keys(
'告警主機(jī):{HOST.NAME}\n'
'告警 IP:{HOST.IP}\n'
'告警時(shí)間:{EVENT.DATE}-{EVENT.TIME}\n'
'告警等級(jí):{TRIGGER.SEVERITY}\n'
'告警信息:{TRIGGER.NAME}:{ITEM.VALUE}\n'
'事件 ID:{EVENT.ID}'
)
time.sleep(1)
#添加新的
driver.find_element_by_xpath('// [@id="operationTab"]/ul/li[5]/div[2]/div/button').click()
#步驟
driver.find_element_by_id('new_operation_esc_step_to').send_keys("3")
#時(shí)間
driver.find_element_by_id('new_operation_esc_period').send_keys("60")
#發(fā)送用戶
driver.find_element_by_xpath('// [@id="opmsgUserListFooter"]/td/button').click()
time.sleep(1)
driver.find_element_by_id('item_1').click()
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[3]/button[1]').click()
driver.find_element_by_id('new_operation_opmessage_mediatypeid').click()
driver.find_element_by_xpath('// [@id="new_operation_opmessage_mediatypeid"]/option[4]').click()
#添加
driver.find_element_by_xpath('//*[@id="operationTab"]/ul/li[6]/div[2]/div/ul[2]/li[1]/button').click()
知識(shí)點(diǎn)講解: sendkey發(fā)送換行文本需要加"\n",而且是在引號(hào)里面,否則沒用。
#恢復(fù)操作
driver.find_element_by_id('tab_recoveryOperationTab').click()
#恢復(fù)標(biāo)題
driver.find_element_by_id('r_shortdata').clear()
driver.find_element_by_id('r_shortdata').send_keys("{TRIGGER.STATUS}:{TRIGGER.NAME}")
#恢復(fù)信息內(nèi)容
driver.find_element_by_id('r_longdata').clear()
driver.find_element_by_id('r_longdata').send_keys(
"恢復(fù)主機(jī):{HOST.NAME}\n"
"恢復(fù) IP:{HOST.IP}\n"
"恢復(fù)時(shí)間:{EVENT.DATE}-{EVENT.TIME}\n"
"恢復(fù)等級(jí):{TRIGGER.SEVERITY}\n"
"恢復(fù)信息:{TRIGGER.NAME}:{ITEM.VALUE}\n"
"恢復(fù) ID:{EVENT.ID}"
)
#添加"新的"
driver.find_element_by_xpath('// [@id="recoveryOperationTab"]/ul/li[3]/div[2]/div/button').click()
driver.find_element_by_xpath('// [@id="recOpmsgUserListFooter"]/td/button').click()
time.sleep(1)
driver.find_element_by_id('item_1').click()
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[3]/button[1]').click()
driver.find_element_by_id('new_recovery_operation_opmessage_mediatypeid').click()
driver.find_element_by_xpath('// [@id="new_recovery_operation_opmessage_mediatypeid"]/option[4]').click()
driver.find_element_by_xpath('//*[@id="recoveryOperationTab"]/ul/li[4]/div[2]/div/ul[2]/li[1]/button').click()
#添加所有動(dòng)作
driver.find_element_by_id('add').click()
#添加監(jiān)控主機(jī)
driver.get('http://192.168.0.112/zabbix/hosts.php?form=create')
#主機(jī)名稱
driver.find_element_by_id("host").send_keys("test")
#群組
driver.find_element_by_xpath('// [@id="hostlist"]/li[3]/div[2]/div/div[2]/button').click()
time.sleep(2)
driver.find_element_by_id("item_2").click()
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[3]/button[1]').click()
#添加ip地址
driver.find_element_by_name('interfaces[1][ip]').clear()
driver.find_element_by_name('interfaces[1][ip]').send_keys('192.168.0.200')
#模板
driver.find_element_by_id('tab_templateTab').click()
driver.find_element_by_xpath('// [@id="templateTab"]/ul/li[2]/div[2]/div/table/tbody/tr[1]/td/div/div[2]/button').click()
time.sleep(2)
driver.find_element_by_id('item_10095').click()
driver.find_element_by_id('item_10050').click()
driver.find_element_by_xpath('// [@id="overlay_dialogue"]/div[4]/button[1]').click()
driver.find_element_by_xpath('//*[@id="templateTab"]/ul/li[2]/div[2]/div/table/tbody/tr[2]/td/button').click()
#點(diǎn)擊添加
driver.find_element_by_id('add').click()
#回到儀表板
driver.get('http://192.168.0.112/zabbix/zabbix.php?action=dashboard.view&ddreset=1')
三、web頁(yè)面驗(yàn)證
總結(jié)
1.這里寫的腳本只是一個(gè)模板,不建議拿過去直接使用
2.這里面有好多細(xì)節(jié)要特別注意,例如彈出對(duì)話框處理,發(fā)送文本換行,時(shí)間停頓等
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
