def SendMail(type,user_list,item,subitem): ''' 邮件通知函数,建立邮件内容并发送给指定用户 ''' if type == 'RECOVERNOTIFY': mailbody = 'Message level:INFO,'+str(CreateMailBody('RECOVERNOTIFY',item,subitem)) emailaddrlist = GetUserEmailAddress(user_list) for emailaddr in emailaddrlist: try: notifyByEmail(subject='[INFO]Notify from OSA',content = mailbody,address = emailaddr) except Exception as e: save_log('ERROR',"send mail fail! ERROR:"+str(e)) if type == 'STATUS_EXCEPTION': mailbody = 'Message level:ERROR,'+str(CreateMailBody('STATUS_EXCEPTION',item,subitem)) emailaddrlist = GetUserEmailAddress(user_list) for emailaddr in emailaddrlist: try: notifyByEmail(subject='[ERROR]Notify from OSA',content = mailbody,address = emailaddr) except Exception as e: save_log('ERROR',"send mail fail! ERROR:"+str(e))
def ThreadForEachServer(each_ipinfo,AllUserEmailAddress): ''' 子线程入口函数,检测服务器的状态 ''' if PortIsAlive(each_ipinfo[1],SOCKET['REMOTE_PORT']): if each_ipinfo[3]=='0' or each_ipinfo[4] != '正常': sql="UPDATE osa_ipinfo SET oStatus = '正常',oIsAlive = '1',oIsAliveNum = 0 WHERE id ="+str(each_ipinfo[0]) row = update(sql) CreateAlarmMsg('服务器存活检测',1,each_ipinfo[1],'服务器'+each_ipinfo[1]+"已恢复正常",0) for EmailAddress in AllUserEmailAddress: try: notifyByEmail(subject='[INFO]Notify from OSA',content = "Message level: INFO, Server "+each_ipinfo[1]+"already has recovered!",address = EmailAddress) except Exception as e: save_log('ERROR','send mail to '+EmailAddress+' failed!! ERROR:'+str(e)) sys.exit() sys.exit() else: result = Ping(each_ipinfo[1]) if True == result: if each_ipinfo[3]=='0': oIsAliveNum=int(each_ipinfo[5]) if oIsAliveNum < 2: for EmailAddress in AllUserEmailAddress: try: notifyByEmail(subject='[WARNING]Notify from OSA',content = "Message level: WARNING,Server "+each_ipinfo[1]+":python client service exception now!",address = EmailAddress) except Exception as e: save_log('ERROR','send mail to '+EmailAddress+' failed!! ERROR:'+str(e)) oIsAliveNum = oIsAliveNum + 1 sql = "UPDATE osa_ipinfo SET oStatus = '服务异常',oIsAliveNum="+str(oIsAliveNum)+" WHERE id ="+str(each_ipinfo[0]) row = update(sql) sys.exit() elif oIsAliveNum >= 2: sql = "UPDATE osa_ipinfo SET oStatus = '服务异常' WHERE oIp ='"+each_ipinfo[1]+"'" row = update(sql) sys.exit() if each_ipinfo[3] == '1': CreateAlarmMsg('服务器存活检测',1,each_ipinfo[1],'服务器'+each_ipinfo[1]+"服务异常",2) sql = "UPDATE osa_ipinfo SET oStatus = '服务异常',oIsAlive = '0',oIsAliveNum=1 WHERE id ="+str(each_ipinfo[0]) row = update(sql) for EmailAddress in AllUserEmailAddress: try: notifyByEmail(subject='[WARNING]Notify from OSA',content="Message level: WARNING,Server "+each_ipinfo[1]+":python client service exception now!",address = EmailAddress) except Exception as e: save_log('ERROR','send mail to '+EmailAddress+' failed!! ERROR:'+str(e)) sys.exit() elif False == result: if each_ipinfo[3] == '0': oIsAliveNum=int(each_ipinfo[5]) if oIsAliveNum < 2: for EmailAddress in AllUserEmailAddress: try: notifyByEmail(subject='[CRITICAL]Notify from OSA',content = "Message level: CRITICAL,Server "+each_ipinfo[1]+"doesn't reach!",address = EmailAddress) except Exception as e: save_log('ERROR','send mail to '+EmailAddress+' failed!! ERROR:'+str(e)) oIsAliveNum = oIsAliveNum + 1 sql = "UPDATE osa_ipinfo SET oStatus = '服务器不可达',oIsAliveNum="+str(oIsAliveNum)+" WHERE id ="+str(each_ipinfo[0]) row = update(sql) sys.exit() if oIsAliveNum>=2: sql = "UPDATE osa_ipinfo SET oStatus = '服务器不可达' WHERE oIp ='"+each_ipinfo[1]+"'" row = update(sql) sys.exit() if each_ipinfo[3] == '1': CreateAlarmMsg('服务器存活检测',1,each_ipinfo[1],'服务器'+each_ipinfo[1]+"不可达",1) for EmailAddress in AllUserEmailAddress: try: notifyByEmail(subject='[CRITICAL]Notify from OSA',content = "Message level: CRITICAL ,Server "+each_ipinfo[1]+"doesn't reach!!",address = EmailAddress) except Exception as e: save_log('ERROR','send mail to '+EmailAddress+' failed!! ERROR:'+str(e)) oIsAliveNum=int(each_ipinfo[5]) oIsAliveNum=oIsAliveNum+1 sql = "UPDATE osa_ipinfo SET oStatus = '服务器不可达',oIsAlive = '0',oIsAliveNum="+str(oIsAliveNum)+" WHERE id ="+str(each_ipinfo[0]) row = update(sql) sys.exit() sys.exit()