近期公司對zabbix告警進行統一規劃、劃分,做一些告警收斂;將一些信息類的告警發送到內部app和郵箱;將一些重於警告的告警發送到手機短信;將一些故障級的告警直接發送語音通知;短信和語音都是買的第三方服務,下面爲實現語音通知的python3腳本:
cat send_yuyin.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author : fanht
# date : 2019-05-10
# @File : send_yuyin.py
# @Software: PyCharm
import requests
import sys
import time
import hashlib
url = "XXXXXXXXXXXXXX" # 第三方語音接口地址
strtime = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
temp2 = ''
# 對關鍵信息進行加密
def My_Asp():
temp = 'XXXXXXXXXXX' # 賬號密碼,下面對賬號密碼進行md5加密
m = hashlib.md5()
m.update(temp.encode('utf8'))
temp1 = m.hexdigest()
new_temp = "XXXXXXX" + temp1 + strtime # 拼接signature = md5(賬戶 Id + md5(密碼) + fetchDate)
n = hashlib.md5()
n.update(new_temp.encode('utf8'))
temp2 = n.hexdigest()
return temp2 # 將拼接加密後的temp2值返回
# 主程序發送語音
def Send_Phone(telephone): # 將手機號作爲參數進行傳入
message = "%s,%s" % (sys.argv[2],sys.argv[3])
params = {
"accountSid": "XXXXXXX", # 賬號Id
"signature": temp2,
"templateId": "XXXXXX", # 模版id
"calledNumber": telephone,
"showNumber": "XXXXXXXX", # 對外顯示號碼
"threadCode": "XXXXXXXXX", # 通道標識
"args": message,
"fetchDate": strtime
}
ret = requests.post(url, data=params)
return ret.text
if __name__ == "__main__":
temp2 = My_Asp()
code = Send_Phone(sys.argv[1])
print(code)
將此腳本扔Linux主機上進行測試