基于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 18 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python通过索引遍历列表的方法
May 04 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
Django添加sitemap的方法示例
Aug 06 Python
Python实战之制作天气查询软件
May 14 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
Python如何省略括号方法详解
Mar 21 Python
Python time库的时间时钟处理
May 02 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
模仿OSO的论坛(三)
2006/10/09 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
基于python的字节编译详解
2017/09/20 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Python 如何实现访问者模式
2020/07/28 Python
失业者真诚求职信范文
2013/12/25 职场文书
医生见习报告范文
2014/11/03 职场文书
2014年协会工作总结
2014/11/22 职场文书
山楂树之恋观后感
2015/06/11 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
导游词之舟山普陀山
2019/11/06 职场文书