Python调用第三方接口实现nagios短信报警

       Python调用第三方接口实现nagios短信报警   


公司有需求,需要短信报警,所以才有了如下的东西。

第三方:smsbao.com 收费是1分钱一条,买的多当然就更便宜,我们买的是700元/10000条。

缺点:

1、发送内容只能有70字节,超过了就会拆分成多条短信。所以得对发送内容进行优化。

2、发送信息的号码不同

优点:

1、通过http接口,所好进行调整

2、信息一般在1-3秒之内发送完毕


nagios commands.cgf内容如下:

vim /usr/local/nagios/etc/objects/commands.cfg

# 'notify-host-by-smsbao' command definition
define  command {
         command_name    notify-host-by-smsbao
         command_line     /usr/local/nagios/libexec/smsbao .py  "主机报警 IP:$HOSTADDRESS$:$HOSTSTATE$ 信息:$HOSTOUTPUT$"
         }
 
# 'notify-service-by-smsbao' command definition
define  command {
         command_name    notify-service-by-smsbao
         command_line     /usr/local/nagios/libexec/smsbao .py  "服务报警 主机:$HOSTNAME$服务:$SERVICEDESC$ IP地址:$HOSTADDRESS$ 状态:$SERVICESTATE$ 信息:$SERVICEOUTPUT$"

        }


smsbao.py 代码如下:

调用方式:

#./smsbao.py "发送信息的内容"

#!/usr/bin/python
#coding:utf8
#exp #python smsbao.py "发送一个测试监控信息"
 
import  requests,sys,time
import  sys
import  time
 
#coding is Error so
default_encoding  =  'utf-8'
if  sys.getdefaultencoding() ! =  default_encoding:
     reload (sys)
     sys.setdefaultencoding(default_encoding)
 
#get localtime 2014-7-11 10:01:01 
ltime  =  time.strftime( '%Y-%m-%d %H:%M:%S' ,time.localtime(time.time()))
 
#u:username p:password c:content m:Phone
Content  =  str (sys.argv[ 1 ])
payload  =  {
     'u' : 'zwhset' ,
     'p' : 'password_md5' ,
     'm' : 'you phone' ,
     'c' :Content
}
 
#send msmbao message to phone
=  requests.get( 'http://www.smsbao.com/sms' ,params = payload)
date  =  ltime  +  "\t"  +  Content  +  "\t"  +  r.text  +  "\n"
 
=  open ( 'smsbao.log' , 'a' )
#write log to smsbao.log
try :
     f.write(date)
     f.close()
except  IOError,e:
     sys.exit()

短信图:

wKiom1O_cXeg2YCBAAEVumJ9qII669.jpg

smsbao后台短信日志

wKioL1O_cirQn-sJAADWLuuqk7o372.jpg        


原文链接:http://cwtea.blog.51cto.com/4500217/1437042/ 

你可能感兴趣的:(接口,local,第三方,短信)