基于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 实现删除文件或文件夹实例详解
Dec 04 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
Python实现最大子序和的方法示例
Jul 05 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
django自定义模板标签过程解析
Dec 14 Python
Python多进程编程常用方法解析
Mar 26 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 Python
python实现剪贴板的操作
Jul 01 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验证码类(分享)
2013/08/06 PHP
php操作xml
2013/10/27 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python中操作MySQL入门实例
2015/02/08 Python
python使用pil生成缩略图的方法
2015/03/26 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python批量修改图片大小的方法
2018/07/24 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Puppeteer使用示例详解
2019/06/20 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
最新自我评价范文
2013/11/16 职场文书
工商管理毕业生推荐信
2013/12/24 职场文书
办公室前台岗位职责
2014/01/04 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
任命书范本大全
2014/06/06 职场文书