Python调用第三方接口实现nagios短信报警
公司有需求,需要短信报警,所以才有了如下的东西。
第三方:smsbao.com 收费是1分钱一条,买的多当然就更便宜,我们买的是700元/10000条。
缺点:
1、发送内容只能有70字节,超过了就会拆分成多条短信。所以得对发送内容进行优化。
2、发送信息的号码不同
优点:
1、通过http接口,所好进行调整
2、信息一般在1-3秒之内发送完毕
朋友们如果觉得麻烦,可以试试OneAlert一键集成nagios,轻松实现微信、电话、邮件、短信、APP的告警通知。http://www.onealert.com/activity/nagios.html
nagios commands.cgf内容如下:
vim /usr/local/nagios/etc/objects/commands.cfg
#'notify-host-by-smsbao'commanddefinitiondefinecommand{command_namenotify-host-by-smsbaocommand_line/usr/local/nagios/libexec/smsbao.py"主机报警IP:$HOSTADDRESS$:$HOSTSTATE$信息:$HOSTOUTPUT$"}#'notify-service-by-smsbao'commanddefinitiondefinecommand{command_namenotify-service-by-smsbaocommand_line/usr/local/nagios/libexec/smsbao.py"服务报警主机:$HOSTNAME$服务:$SERVICEDESC$IP地址:$HOSTADDRESS$状态:$SERVICESTATE$信息:$SERVICEOUTPUT$"}
smsbao.py 代码如下:
调用方式:
#./smsbao.py "发送信息的内容"
#!/usr/bin/python#coding:utf8#exp#pythonsmsbao.py"发送一个测试监控信息"importrequests,sys,timeimportsysimporttime#codingisErrorsodefault_encoding='utf-8'ifsys.getdefaultencoding()!=default_encoding:reload(sys)sys.setdefaultencoding(default_encoding)#getlocaltime2014-7-1110:01:01ltime=time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))#u:usernamep:passwordc:contentm:PhoneContent=str(sys.argv[1])payload={'u':'zwhset','p':'password_md5','m':'youphone','c':Content}#sendmsmbaomessagetophoner=requests.get('http://www.smsbao.com/sms',params=payload)date=ltime+"\t"+Content+"\t"+r.text+"\n"f=open('smsbao.log','a')#writelogtosmsbao.logtry:f.write(date)f.close()exceptIOError,e:sys.exit()
短信图:
smsbao后台短信日志
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。