首次開通短信套餐包的騰訊雲每個月會贈送100條的免費短信數量,咱們能夠拿這100條短信進行測試python
這裏須要記住應用的ID還有key,後面接入的時候須要用到 json
首先騰訊雲只支持如下類型的簽名,我的用的話能夠使用本身已經備案的網站或者本身×××下,阿里雲的是不×××號,因爲個人網站還沒備案,這裏就×××能夠了,比其餘類型的要方便,申請×××審覈不經過 api
模板內容使用{}做爲變量,建立完模板以後會生成一個模板ID,這個後面接入的時候也會用到,因爲我的用戶單個模板變量最大長度不超過12個字符,所以須要多定義幾個變量,最後用正則取出app
注意:模板變量之間使用,分隔的話,那麼在觸發器里名字就不要包含,了,不然會發生轉義,致使因爲變量太長而發送短信失敗 dom
騰訊雲支持多種語言的SDK和api,使用SDK會更加的方便一點,騰訊雲的python SDK爲qcloudsms_py,能夠直接使用pip安裝,騰訊雲的SDK文檔地址爲:https://cloud.tencent.com/document/product/382/11672 ,所以我選擇了使用api來接入,
因爲騰訊的模板單個變量長度最長不能超過12個字符,且模板變量之間不能有空字符,因此咱們須要在傳入模板以前進行文本處理ide
#!/usr/bin/python3 #coding=utf-8 #author:wanger import requests,re import time,sys,json,hashlib,random rand=random.randint(100000,999999) mobile=sys.argv[1] message=sys.argv[2] message="""%s""" %message times=time.time() times=int(times) tpl_id=225686 appkey='f545bc772b396c41df6da4c4442ce085' raw_text="appkey={}&random={}&time={}&mobile={}".format(appkey,rand,times,mobile) sig=hashlib.sha256(raw_text.encode('utf-8')).hexdigest() def rest(message): #獲取報警內容,方便後續調試 with open('/tmp/message','w',encoding='utf-8') as f: s=json.dump(message,f,ensure_ascii=False) res=re.findall(r':(.*)\r\n',message,re.M) hostname=res[0] ip1=re.match(r'(\d+\.\d+)\.(.*)',res[1]).group(1) ip2=re.match(r'(\d+\.\d+)\.(.*)',res[1]).group(2) date1=re.match(r'(.*)-(.*)',res[2]).group(1) time1=re.match(r'(.*)-(.*)',res[2]).group(2) level=res[3] id1=res[4] alert=[hostname,ip1,ip2,date1,time1,level,id1] #獲取處理後的前五行內容,方便調試 with open('tmp/messages','a',encoding='utf-8') as f: for i in alert: f.write(i) return alert def remes(alert,message): res=re.search('報警信息:(.*)$',message).group(1) event=[] a,b=0,11 for i in range(5): s1=res[a:b] if len(s1)==0: s1='\r' event.append(s1) a,b=a+11,b+11 var=alert+event #獲取處理後的報警信息,方便調試 with open('/tmp/messages1','a',encoding='utf-8') as f: for i in event: s=json.dump(i,f,ensure_ascii=False) return var #print(sig) def sendsms(remes): url='https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=1400238944&random={}'.format(rand) header={"Content-Type": "application/json"} data={ "ext": "123", "extend": "", "params": [ remes[0], remes[1], remes[2], remes[3], remes[4], remes[5], remes[6], remes[7], remes[8], remes[9], remes[10], remes[11] ], "sig": sig, "sign": "沒有故事的陳師傅", "tel": { "mobile": mobile, "nationcode": "86" }, "time": times, "tpl_id": 387120 } request=requests.post(url=url,headers=header,json=data) return json.loads(request.content) rest=rest(message) remes=remes(rest,message) sendsms(remes)
將腳本放到/usr/lib/zabbix/alertscripts/目錄下,並授予腳本操做權限,而後在zabbix頁面進行配置post
消息內容的順序不能亂,由於是與短信模板進行匹配的 測試
中止zabbix-agent,使其產生報警網站
systemctl stop zabbix-agent
若是要查看短信的報錯信息,能夠在騰訊雲短信服務的統計分析中查看 阿里雲
歡×××陳師傅」