基于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单链表的简单实现方法
Sep 23 Python
python在控制台输出进度条的方法
Jun 20 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
python计算两个地址之间的距离方法
Jun 09 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
pycharm导入源码的具体步骤
Aug 04 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 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程序员的技术瓶颈分析
2011/07/17 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
Python3处理HTTP请求的实例
2018/05/10 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python hashlib模块用法实例分析
2018/06/12 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
一套SQL笔试题
2016/08/14 面试题
小学生检讨书大全
2014/02/06 职场文书
承诺书范本
2015/01/21 职场文书
保留意见审计报告
2015/06/05 职场文书
恰同学少年观后感
2015/06/08 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
小学三年级作文之写景
2019/11/05 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang
利用Apache Common将java对象池化的问题
2022/06/16 Servers