天天看點

Python Selenium 自動配置zabbix郵箱報警功能介紹:實驗環境:實驗步驟總結

在上一篇部落格中寫了關于zabbix配置郵箱報警功能,但由于配置過程十分繁瑣,這裡我寫了一個自動化配置的腳本(python selenium子產品)。直接運作腳本會提高很多效率!
1.python3.7 2.selenium 子產品 3.PyCharm 開發軟體
溫馨提示:具體步驟參考部落格 https://blog.51cto.com/13760351/2431576

編寫selenium自動化腳本

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("//input[@type='text']").send_keys("Admin") driver.find_element_by_id("password").send_keys("zabbix") driver.find_element_by_id("enter").click()

# 建立媒體類型

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") # 添加腳本參數 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_params_1_exec_param").send_keys("{ALERT.SUBJECT}") driver.find_element_by_id("exec_params_2_exec_param").send_keys("{ALERT.MESSAGE}") # 添加完成 driver.find_element_by_id("add").click()

# 設定報警媒介

driver.get("http://192.168.0.112/zabbix/users.php?form=update&userid=1") # 設定中文 driver.find_element_by_id("lang").click() driver.find_element_by_xpath('//[@id="lang"]/option[3]').click() # 報警媒介 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("[email protected]") driver.find_element_by_xpath('//[@id="overlay_dialogue"]/div[3]/button[1]').click() # 更新 driver.find_element_by_id("update").click()

# 配置操作-動作

driver.get('http://192.168.0.112/zabbix/actionconf.php?ddreset=1') # 删除預設模闆 driver.find_element_by_id("g_actionid_3").click() driver.find_element_by_xpath('//[@id="action_buttons"]/button[3]').click() #确認對話框 dig_confirm = driver.switch_to.alert dig_confirm.accept() #動作子產品 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") #新的觸發條件 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() driver.find_element_by_id('item_2').click() driver.find_element_by_xpath('//*[@id="actionTab"]/ul/li[4]/div[2]/div/table/tbody/tr[2]/td/button').click()
知識點講解:确認對話框部分,是沒有直接元素可以定位的,隻能使用固定"dig_confirm"方法

#操作

driver.find_element_by_id('tab_operationTab').click() #預設時間 driver.find_element_by_id('esc_period').clear() driver.find_element_by_id('esc_period').send_keys("60") #預設标題 driver.find_element_by_id('def_shortdata').clear() driver.find_element_by_id('def_shortdata').send_keys("{TRIGGER.STATUS}:{TRIGGER.NAME}") #操作内容 driver.find_element_by_id('def_longdata').clear() driver.find_element_by_id('def_longdata').send_keys( '告警主機:{HOST.NAME}\n' '告警 IP:{HOST.IP}\n' '告警時間:{EVENT.DATE}-{EVENT.TIME}\n' '告警等級:{TRIGGER.SEVERITY}\n' '告警資訊:{TRIGGER.NAME}:{ITEM.VALUE}\n' '事件 ID:{EVENT.ID}' ) #添加新的 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") #時間 driver.find_element_by_id('new_operation_esc_period').send_keys("60") #發送使用者 driver.find_element_by_xpath('//[@id="opmsgUserListFooter"]/td/button').click() driver.find_element_by_id('item_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()
知識點講解:sendkey發送換行文本需要加"\n",而且是在引号裡面,否則沒用。

#恢複操作

driver.find_element_by_id('tab_recoveryOperationTab').click() #恢複标題 driver.find_element_by_id('r_shortdata').clear() driver.find_element_by_id('r_shortdata').send_keys("{TRIGGER.STATUS}:{TRIGGER.NAME}") #恢複資訊内容 driver.find_element_by_id('r_longdata').clear() driver.find_element_by_id('r_longdata').send_keys( "恢複主機:{HOST.NAME}\n" "恢複 IP:{HOST.IP}\n" "恢複時間:{EVENT.DATE}-{EVENT.TIME}\n" "恢複等級:{TRIGGER.SEVERITY}\n" "恢複資訊:{TRIGGER.NAME}:{ITEM.VALUE}\n" "恢複 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() 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() #添加所有動作 driver.find_element_by_id('add').click()

#添加監控主機

driver.get('http://192.168.0.112/zabbix/hosts.php?form=create') #主機名稱 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() #添加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() 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() #點選添加

#回到儀表闆

driver.get('http://192.168.0.112/zabbix/zabbix.php?action=dashboard.view&ddreset=1')
Python Selenium 自動配置zabbix郵箱報警功能介紹:實驗環境:實驗步驟總結
Python Selenium 自動配置zabbix郵箱報警功能介紹:實驗環境:實驗步驟總結
1.這裡寫的腳本隻是一個模闆,不建議拿過去直接使用 2.這裡面有好多細節要特别注意,例如彈出對話框處理,發送文本換行,時間停頓等