Пример #1
0
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)
Пример #2
0
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))