基于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基础教程之缩进介绍
Aug 29 Python
Python实现LRU算法的2种方法
Jun 24 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
python下载库的步骤方法
Oct 12 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
Python如何脚本过滤文件中的注释
May 27 Python
Django Path转换器自定义及正则代码实例
May 29 Python
用python读取xlsx文件
Dec 17 Python
Python 实现RSA加解密文本文件
Dec 30 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
php获取汉字首字母的函数
2013/11/07 PHP
PHP可变变量学习小结
2015/11/29 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
Python深入学习之内存管理
2014/08/31 Python
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
python实现名片管理器的示例代码
2019/12/17 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
python 绘制正态曲线的示例
2020/09/24 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
教师专业自荐书范文
2014/02/10 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
技术总监管理职责范本
2014/03/06 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
同意报考证明
2015/06/17 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS