最近发现用联通邮箱收邮件然后下发短信有点不靠谱,正好公司有短信网关,所以就写了一个python脚本,nagios调用脚本发送短信。
#!/usr/bin/env python#-*- coding: utf-8 -*-'''author:netsedcreated on 2013-8-26'''?import mysqldbimport sys?phonenumber=('13666666666',)message=sys.argv[1]?class smsgate: def __init__(self,host=1.1.1.1,user=test,password=test,port=3306,charset=utf8,db=smsgate_cmpp): self.host=host self.user=user self.password=password self.port=port self.charset=charset self.db=db try: self.conn=mysqldb.connect(host=self.host,user=self.user,passwd=self.password,port=self.port,db=self.db) self.conn.set_character_set(self.charset) self.cur=self.conn.cursor() except mysqldb.error as e: print(mysql error %d: %s % (e.args[0], e.args[1]))? def sms_insert(self,usernumber,messagecontent): sql=insert into `send_queue` (`id`, `spnumber`, `usernumber`, `serviceid`, `messagecoding`, \ `messagecontent`, `reserve`, `createtime`, `sendtime`, `fromserver`, `level`) values \ (null, '11111', '%s', 'free', '15', '%s', '', now(), now(), \ 'yanyan', '4') % (usernumber,messagecontent) try: self.cur.execute(sql) self.conn.commit() except: self.conn.rollback() def close(self): self.cur.close() self.conn.close()?if __name__ == '__main__': send = smsgate() for i in phonenumber: send.sms_insert(i,message) send.close()
简单说明一下,公司的短信网关使用起来比较简单,只要按照固定格式插入到mysql里面的短信队列表几个,短信网关程序会自动扫描队列。这个脚本只需要将内容插入到队列即可。
原文地址:python mysql 短信告警, 感谢原作者分享。
