基于Python脚本实现邮件报警功能


Posted in Python onMay 20, 2020

使用了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"

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

Python 相关文章推荐
Python备份Mysql脚本
Aug 11 Python
python中的错误处理
Apr 10 Python
python线程池threadpool实现篇
Apr 27 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
python函数与方法的区别总结
Jun 23 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
python中@property的作用和getter setter的解释
Dec 22 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
python实现双向链表原理
May 25 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 #Python
Django 解决model 反向引用中的related_name问题
May 19 #Python
django queryset 去重 .distinct()说明
May 19 #Python
django正续或者倒序查库实例
May 19 #Python
Django model.py表单设置默认值允许为空的操作
May 19 #Python
django 模型中的计算字段实例
May 19 #Python
Django获取model中的字段名和字段的verbose_name方式
May 19 #Python
You might like
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
两款万能的php分页类
2015/11/12 PHP
DWR Ext 加载数据
2009/03/22 Javascript
页面中js执行顺序
2009/11/09 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
python实现ping的方法
2015/07/06 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
国家励志奖学金获奖感言
2014/01/09 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年库房工作总结
2015/04/30 职场文书
演讲开头怎么书写?
2019/08/06 职场文书