• 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"
    
  • 相关阅读:
    springmvc(架构、组件、视图解析器的配置)
    springmvc(mvc、springmvc、springmvc入门程序)
    jvm类文件结构解析(访问标志、异常)
    软件工程(项目前期)
    jvm:java类文件结构(字节码文件的解析)
    Mybatis动态sql(if、where、sql、foreach、choose)
    ARM指令系统(CISC与RISC、新建工程)
    pyppeteer之流程解析
    Puppeteer简介及安装
    selenium之前进后退
  • 原文地址:https://www.cnblogs.com/weijiazheng/p/12910061.html
Copyright © 2020-2023  润新知