基于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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
python实现可变变量名方法详解
Jul 01 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python 中由 yield 实现异步操作
May 04 Python
BeautifulSoup获取指定class样式的div的实现
Dec 07 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将向Java靠拢
2006/10/09 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
Python操作csv文件实例详解
2017/07/31 Python
python 生成器协程运算实例
2017/09/04 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
python实现弹跳小球
2019/05/13 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
周年庆典主持词
2014/04/02 职场文书
投资合作协议书范本
2014/04/17 职场文书
党员一帮一活动总结
2014/07/08 职场文书
安全守法证明
2015/06/23 职场文书