zoukankan      html  css  js  c++  java
  • Python脚本实现邮件报警功能

    Python脚本实现邮件报警功能

    使用了smtplib等第三方库,进行发送邮件,完成邮件报警功能

    如下是实例 :

    #!/usr/bin/python
    
    import glob
    import operator
    from optparse import OptionParser
    import smtplib
    import email.MIMEText as MIMEText
    import email.Utils.formadate as formatdate
    
    msg = ""
    #主方法
    def main():
        global options
        global msg
    
        parser = OptionParser(add_help_option=False)
        parser.add_option("-m", "--mail", dest="mail", type="str", help="email address to send report result (comma separated)")
        parser.add_option("-t", "--title", dest="title", type="str", help="email title (default:Error File Count)")
        parser.add_option("-a", "--admin", dest="admin", type="str", help="set sender address. works with -m option")
        (options, args) = parser.parse_args()
    
        #这里监控文件夹下的文件数,超出25个文件即报警
        datanum = cntFiles("/data/","csv")
        if (operator.gt(datanum,25)):
            msg += " Please be alert : 
     the number of files under /data/ path is greater than 25 :"
            msg += "
     =========================================="
            msg += "
     The number of files is : " + str(datanum)
            sendmsg(options,msg)
        print("==== end ====")
    
    #添加发送邮件的信息
    def sendmsg(options,msg):
        if options.mail:
            toAddr = options.mail
            if options.admin:
                fromAddr = options.admin
            else:
                fromAddr = 'zhangsan@neiyou.cn'#这里是公司的公用SMTP邮箱账号
    
            if options.title:
                subject = options.title
            else:
                subject = 'File Stacking Alarm'
            msg += "
     ========================================== 
    "
            print( msg)
            msg = createMsg(fromAddr, toAddr, subject, msg)
            print( msg)
            send(fromAddr, toAddr, msg)
        else:
            print( msg)
    
    #glob方法,统计文件夹下的文件数
    def cntFiles(in_directory, ext):
        stage = len(glob.glob1(in_directory,"*." + ext))
        return stage
    
    #创建邮件头
    def createMsg(fromAddr, toAddr, subject, body):
        msg = MIMEText(body)
        msg['Subject'] = subject
        msg['To'] = toAddr
        msg['From'] = fromAddr
        msg['Date'] = formatdate()
        return msg
    
    #发送邮件
    def send(fromAddr, toAddr, msg):
        try:
            #这里添加公司的SMTP邮箱地址
             s = smtplib.SMTP('192.168.12.120')
             s.sendmail(fromAddr, toAddr.split(','), msg.as_string())
             s.close()
             print("SUCCESS: sending email")
        except smtplib.SMTPException:
             print("ERROR: sending email")
    
    if __name__ == '__main__':
        main()
    

    linux上做计划任务,把指令添加进计划任务中:

    Errymsfileemail.py -m zhangsan@gongsi.cn -t "[ERROR/$HOST] File Stacking Alarm"
    
  • 相关阅读:
    Rafy 框架
    巧用拦截器:高效的扩展点设计
    Rafy 框架
    Rafy 框架
    Rafy 框架
    Rafy 框架-发布网页版用户手册
    Rafy 领域实体框架
    基金投资方法札记
    股票、基金投资方案总结
    BaaS API 设计规范
  • 原文地址:https://www.cnblogs.com/weijiazheng/p/12910061.html
Copyright © 2011-2022 走看看