⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailalert.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
字号:
# $Id: mailAlert.py 2209 2004-01-27 11:25:30Z mortenv $# $Source: /usr/local/cvs/navbak/navme/subsystem/statemon/lib/mailAlert.py,v $import smtplib, threading, Queue, timefrom debug import debugdef mailAlert(*args, **kwargs):    if _mailAlert._instance is None:        _mailAlert._instance=_mailAlert(*args, **kwargs)    return _mailAlert._instanceclass _mailAlert(threading.Thread):    _instance=None    def __init__(self):        threading.Thread.__init__(self)        self.setDaemon(1)        self._recipent = "drift-nav@itea.ntnu.no"        self._sender = "drift-nav@itea.ntnu.no"        self._alertq = Queue.Queue()        self._alertlist = []    def run(self):        while 1:            # Block until there is a item in our queue            debug("mailalert -> Waiting for event")            self._alertlist.append(self._alertq.get())            debug("mailalert -> Got event, waiting for corrlated events")            # Wait and see if we get any other reports            time.sleep(300)            for i in range(self._alertq.qsize()):                self._alertlist.append(self._alertq.get())            # Send the alert...            debug("mailalert -> Stripping duplicates...")            try:                self.stripAlert()            except Exception, info:                debug("mailalert -> failed in stripAlert(): %s" % info)            if not self._alertlist:                debug("mailalert -> All events marked as duplicates.")            else:                debug("mailalert -> Creating mail body")                self.createMailText()                debug("mailalert -> Sending mail...")                try:                    self.sendMail()                except Exception,info:                    debug("mailalert -> Failed while sending alert: %s" % info,1)                # Empty the list of alerts...                self._alertlist=[]                def stripAlert(self):        """        Remove duplicates and services that har both down and        up message        """        alerthash={}        removable=[]        for each in self._alertlist:            #            #key="%s:%s" % (each.sysname, each.type)            key=each.serviceid            if not alerthash.has_key(key) or alerthash[key] == None:                alerthash[key]=each            elif alerthash[key] != None and alerthash[key].status!=each.status:                alerthash[key]=None                debug("mailalert -> Removed duplicated alert: %s" % key)            else:                debug("mailalert -> Key: %s made it to the else clause..."%key)        self._alertlist=filter(lambda x:x != None, alerthash.values())        def createMailText(self):        txt="\n"        for each in self._alertlist:            txt += "[%s] %-17s %-5s -> %s, %s\n" % (each.time, each.sysname, each.type, each.status, each.info)        self.alertText=txt    def sendMail(self):        subject = "[NAV ServiceMonitor] New event(s) %s" % (time.strftime('%Y-%m-%d %H:%M:%S'))        msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\n" % (self._sender, self._recipent, subject)        msg += self.alertText        msg += "\n\n--\nAs friendly as possible"        msg += "\nCurrent status at: http://isbre.itea.ntnu.no/services/"        smtpobj = smtplib.SMTP("smtp.stud.ntnu.no")        smtpobj.set_debuglevel(0)        smtpobj.sendmail(self._sender, self._recipent, msg)        smtpobj.quit()        debug("mailalert -> Alert sent successfully.")                def put(self, event):        self._alertq.put(event)        debug("mailalert -> Queued alert: %s:%s" % (event.sysname, event.type))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -