基于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 yield使用方法示例
Dec 04 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
Python实现聊天机器人的示例代码
Jul 09 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
如何给Python代码进行加密
Jan 10 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHP 替换模板变量实现步骤
2009/08/24 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
php简单的上传类分享
2016/05/15 PHP
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python中Genarator函数用法分析
2015/04/08 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
警察先进个人事迹材料
2014/05/16 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript