基于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写的贪吃蛇游戏例子
Jun 16 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
postman和python mock测试过程图解
Feb 22 Python
Python包资源下载路径报404解决方案
Nov 05 Python
python基础之while循环语句的使用
Apr 20 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
详解python字符串驻留技术
May 21 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 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文章按日期(月日)SQL归档语句
2012/11/29 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
JS DOM 操作实现代码
2010/08/01 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
python发送邮件接收邮件示例分享
2014/01/21 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
高级3D打印市场:Gambody
2019/12/26 全球购物
数据库面试要点基本概念
2013/10/31 面试题
高分子材料与工程专业个人求职信
2013/12/15 职场文书
医药类个人求职的自我评价
2014/02/12 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
教师师德考核自我评价
2014/09/13 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
人事任命通知
2015/04/20 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
React自定义hook的方法
2022/06/25 Javascript