基于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 : \n the number of files under /data/ path is greater than 25 :"
    msg += "\n =========================================="
    msg += "\n 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 += "\n ========================================== \n"
    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"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2020-05-19

zabbix利用python脚本发送报警邮件的方法

前言 zabbix是个非常强大的监控工具,可以监控linux和windows的服务器数据,也可以通过自定义key来扩展默认的监控项,但是自带的邮件报警提供的信息却不太友善.本文想通过自定脚本的方式,实现在报警邮件的同时发送对应的图像和url连接. 步骤如下: 1.编辑zabbix_server.conf文件,修改AlertScriptsPath参数,该参数用于指定外部脚本的绝对路径. vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr

python实现自动发送报警监控邮件

本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下 因为有一些日常任务需要每日检查日否执行正确,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就可以使用了. 这四个需要填写一下,我们使用的qq企业邮箱所以host为smtp.exmail.qq.com mail_host=""  mail_user=""  mail_pass=""  mail_postfix=""

python实现QQ邮箱发送邮件

本文实例为大家分享了python实现QQ邮箱发送邮件的具体代码,供大家参考,具体内容如下 1.代码: #!/usr/bin/python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header mail_host="smtp.qq.com"#设置的邮件服务器host必须是发送邮箱的服务器,与接收邮箱无关. mail_user=&

基于python3监控服务器状态进行邮件报警

在正式的生产环境中,我们常常会需要监控服务器的状态,以保证公司整个业务的正常运转,常常我们会用到像nagios.zabbix这类工具进行实时监控,那么用python我们怎么进行监控呢?这里我们利用了python3调用psutil和yagmail这两个模块进行监测服务器的内存.磁盘.cpu状态(以及我们监控apache运行状态用到的socket模块) 监控内存.磁盘.cpu import psutil def mem(): mem = psutil.virtual_memory() return

如何使用Python发送HTML格式的邮件

这篇文章主要介绍了如何使用Python发送HTML格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 发送html格式的和普通文本格式差不多,只是MIMEText(content,"html","utf-8"))与MIMEText(content,"plain","utf-8"))格式的区别,格式改一下就行了 Python发送HTML格式的邮件与发送纯文本消息的邮件不同

Python实现监控Nginx配置文件的不同并发送邮件报警功能示例

本文实例讲述了Python实现监控Nginx配置文件的不同并发送邮件报警功能.分享给大家供大家参考,具体如下: 因为项目中经常涉及到多个Nginx之间的配置文件更改,可能回导致最后Nginx之间的配置文件有所不同,这样会对项目产生影响,最典型的就是可能当访问域名解析到其中一台Nginx的时候,可能是正常的,当域名解析到另外一台Nginx的时候,由于配置文件的不同,导致访问出错之类的,影响体验,所以用python写了一个监控配置文件不同的脚本,如果发现不同,就报警,并且以HTML的形式发送邮件指出

Python监控主机是否存活并以邮件报警

利用Python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟.丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理. #!/usr/bin/env python # coding:UTF-8 import time import pexpect import smtplib from email.mime.text import MIMEText mail_host = "smtp.163.com" #定义smtp服务器 mai

Zabbix邮件报警设置方法

说明: Zabbix监控服务端.客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常. 实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报警邮件到指定邮箱. 具体操作: 以下操作在Zabbix监控服务端进行 备注:Zabbix监控服务端 操作系统:CentOS 主机名:zabbix.osyunwei.com 邮件报警有两种情况: 1.Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本

Zabbix3.0邮件报警配置

我们搭建好Zabbix服务器创建了监控项和触发器之后,如何使用邮箱达到报警功能?本文使用mail作为邮件发送工具. 下面将介绍,如何安装和配置邮箱. 话不多说,就是干!我们分两步,第一步安装mail邮件发送工具,第二步配置Zabbix服务器发送报警邮件 一.mail安装和设置 安装邮件支持功能 yum install postfix systemctl start postfix systemctl enable postfix 验证:ss -lntp 安装发邮件工具mail yum -y in

python获取外网IP并发邮件的实现方法

第一步:通过ip138来爬取外网ip 第二步:通过python的smtplib模块和email来发送邮件,具体用法去网上搜索, 下面是代码示例: #!/usr/bin/env python #coding:utf-8 import urllib2 import re import smtplib from email.MIMEText import MIMEText from email.Header import Header #################################

Python实现读取邮箱中的邮件功能示例【含文本及附件】

本文实例讲述了Python实现读取邮箱中的邮件功能.分享给大家供大家参考,具体如下: #-*- encoding: utf-8 -*- import sys import locale import poplib from email import parser import email import string # 确定运行环境的encoding __g_codeset = sys.getdefaultencoding() if "ascii"==__g_codeset: __g_

Python编程实现及时获取新邮件的方法示例

本文实例讲述了Python编程实现及时获取新邮件的方法.分享给大家供大家参考,具体如下: #-*- encoding: utf-8 -*- import sys import locale import poplib from email import parser import email import string import mysql.connector import traceback import datetime from mysql.connector import error

使用Grafana 展示Docker容器的监控图表并设置邮件报警规则(图解)

一.Docker 容器监控报警方式 接着上篇文章的记录,看到grafana的版本已经更新到4.2了,并且在4.0以后的版本中,加入了Alert Notifications 功能,这样在对容器 监控完,可以加入报警规则.根据官网介绍,报警方式也有很多种,常见的Email.Slack即时通讯.webhook等. 本篇记录的是邮件的报警设置.环境和上篇基本一致,都是在Docker 平台测试环境下,另外本篇使用的grafana容器的版本是用的 dockerhub上最新版本,该版本为grafana/gra

Python自动化导出zabbix数据并发邮件脚本

Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件.效果如下: 下面是脚本,可根据自己的具体情况修改: #!/usr/bin/python` `#coding:utf-8` `import MySQLdb` `import time,datetime` `import xlsxwriter` `import smtplib` `from` `email.mime.text import MIMEText` `from` `email.mime.multipart imp

使用python检测主机存活端口及检查存活主机

监测主机存活的端口 #!/usr/bin/env python # coding-utf import argparse import socket import sys #author: wolf_ribble def scan_ports(host,start_port,end_port): """Scan remote hosts""" try: sock = socket.socket(socket.AF_INET, socket.SOC