首次开通短信套餐包的腾讯云每个月会赠送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
若是要查看短信的报错信息,能够在腾讯云短信服务的统计分析中查看 阿里云
欢×××陈师傅”