基于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笔记(2)
Oct 24 Python
python回调函数用法实例分析
May 09 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
pandas ix &iloc &loc的区别
Jan 10 Python
python实现整数的二进制循环移位
Mar 08 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
使用python远程操作linux过程解析
Dec 04 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 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
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
使用js简单实现了tree树菜单
2013/11/20 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
canvas像素画板的实现代码
2018/11/21 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
问卷调查计划书
2014/01/10 职场文书
政府门卫岗位职责
2014/04/29 职场文书
医院节能减排方案
2014/06/13 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
七年级地理教学计划
2015/01/22 职场文书
MySQL创建管理子分区
2022/04/13 MySQL