Python脚本实现邮件报警功能

Posted Mr_Wmn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"

 

以上是关于Python脚本实现邮件报警功能的主要内容,如果未能解决你的问题,请参考以下文章

python程序发送服务器状态信息报警邮件(带多类型附件)

Python通过smtp服务发送电子邮件给指定用户(适用于Zabbix邮件报警)

Python3 实现简易ping监控并发送报警邮件

zabbix邮件报警python脚本

配置邮件报警功能(脚本方式)

zabbix邮件报警脚本(Python)