def send_messages(iteminfo,reason,status): #根据通知对象获取通知用户 if iteminfo[16]: send_list= get_userlist.get_sendto_users(iteminfo[16],iteminfo[20]) else: send_list= get_userlist.get_sendto_users('1NULL',iteminfo[20]) log_info(str(send_list) + "======send_messages=======") #获取报警内容 subject ,mailContent= email_alarm_title(iteminfo[1],iteminfo[3],iteminfo[2],iteminfo[4],reason,status,iteminfo[10],iteminfo[21],iteminfo[0]) #发送邮件 sql='select * from uxin_alarm_email limit 1' mailset=cmdtosql.select(sql) if send_list['emaillist']: for i in send_list['emaillist']: send_alarm.send_mail(mailset[0][1],mailset[0][2],mailset[0][3],i,subject,mailContent) log_info(str(iteminfo[2]) + str(status) + ",发送邮件至" + str(i) + "成功.") #发送微信 if send_list['weixinlist']: #合并所有微信帐号,一次发送 wx='' for i in send_list['weixinlist']: wx = wx + '|' + str(i) #如果告警内容大于2000个字节,拆分发送 if len(subject) >= 2000: c = 1000 s = subject.decode('utf-8') try: d = [s[i:i+c] for i in xrange(0,len(s),c)] except Exception, e: log_info(e) sum=0 for i in d: sum = sum + 1 i = "【长消息 第" + str(sum) + "条】" + str(i) if sum >= 2: i = "[接上条]" + str(i) url = config.WEIXIN+"SendWeixinMsg?alarm_list=%s&alarm_content=%s" %(wx,i.encode('utf-8')) ss=urllib.urlopen(url).read() log_info(str(iteminfo[2]) + str(status) + ",发送微信至" + str(wx) + "结果" + str(ss)) else: url = config.WEIXIN+"SendWeixinMsg?alarm_list=%s&alarm_content=%s" %(wx,subject) log_info(url) try: s=urllib.urlopen(url.encode('utf-8')).read() log_info(str(iteminfo[2]) + str(status) + ",发送微信至" + str(wx) + "结果" + str(s)) except Exception, e: log_info(e)
def monitor_get_iteminfos(): ''' @Monitor 获取当前需要监控的项目信息 @满足时间条件和 status = 0 ''' try : time_now = cmdtosql._get_time(1) sql = "select * from uxin_alarm where (next_time is null or next_time <='"+time_now+"') and status = 0 " log_debug("monitor_get_iteminfos()执行sql语句:"+str(sql)) return cmdtosql.select(sql) except Exception as e: log_error("monitor_get_iteminfos():"+str(e))