基于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之重回函数
Oct 10 Python
python简单的函数定义和用法实例
May 07 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
python 读取文件并替换字段的实例
Jul 12 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
python增加图像对比度的方法
Jul 12 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
python怎么判断模块安装完成
Jun 19 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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伪静态页面函数附使用方法
2008/06/20 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
python实现控制台输出彩色字体
2020/04/05 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
应届毕业生简历自我评价
2014/01/31 职场文书
2015年端午节活动总结
2015/02/11 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
python基础学习之递归函数知识总结
2021/05/26 Python
python用tkinter开发的扫雷游戏
2021/06/01 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
Python使用永中文档转换服务
2022/05/06 Python