python监控文件并且发送告警邮件


Posted in Python onJune 21, 2018

本文实例为大家分享了python监控文件并发送邮件的具体代码,供大家参考,具体内容如下

一、配置文件

import time,datetime 
 
TODAY = time.time() 
TIME_PATH = str(TODAY.year) + "/" + str(TODAY.month) + "/" + str(datetime.datetime.now().date()) 
 
MONITOR_CONFIG = { 
 "monitor_file":[ 
  {"key":"py_distribute-datacollect","path":"/home/vagrant/py_distribute/data/" + TIME_PATH + "_error.txt","max_size":100}, 
 ], 
 "send_account":"xxxx@qq.com", 
 "license_code":"feruwfpsiwkuibge", # 授权码 
 "rec_account":["xxxx@qq.com"], 
 "host":"smtp.qq.com", 
 "port":465, 
 "sleep_time":60, 
}

二、监控

#-*- encoding: utf8 -*- 
# 腾讯邮箱授权码 
# feruwfpsiwkuibge 
 
import smtplib 
import logging 
import time 
import os 
from email.mime.text import MIMEText 
from monitor_config import MONITOR_CONFIG 
 
FORMAT = '[%(asctime)-15s] %(message)s' 
logging.basicConfig(filename = "monitor.txt", level = logging.DEBUG, filemode = "a", format=FORMAT) 
 
def get_file_size(file_name): 
 if os.path.exists(file_name): 
  bytes_size = float(os.path.getsize(file_name)) 
  kb = bytes_size/1024 
  mb = kb/1024 
  return mb 
 return 0 
 
def send_email(file_name,key): 
 msg = MIMEText(file_name+"文件超过限制,可能存在异常,请处理。项目为:"+key) 
 msg = [key] 
 msg["From"]= MONITOR_CONFIG["send_account"] 
 msg["To"] = MONITOR_CONFIG["rec_account"] 
 try: 
  s = smtplib.SMTP_SSL(MONITOR_CONFIG["host"],MONITOR_CONFIG["port"]) 
  s.login(MONITOR_CONFIG["send_account"],MONITOR_CONFIG["license_code"]) 
  s.sendmail(MONITOR_CONFIG["send_account"],MONITOR_CONFIG["rec_account"],msg.as_string()) 
  s.quit() 
  logging.info(file_name + "警告发送成功") 
 except Exception as e: 
  logging.exception(e) 
 
# check 
while True: 
 for file in MONITOR_CONFIG["monitor_file"]: 
  file_size = get_file_size(file["path"]) 
  if file_size > file["max_size"]: 
   send_email(file["path"],file["key"]) 
 logging.info("检查完毕") 
 time.sleep(MONITOR_CONFIG["sleep_time"])

三、需在QQ邮箱设置开启POP3/SMTP服务

python监控文件并且发送告警邮件

四、参考

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
详解Python中的Descriptor描述符类
Jun 14 Python
视觉直观感受若干常用排序算法
Apr 13 Python
Python实现类的创建与使用方法示例
Jul 25 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
python实现对变位词的判断方法
Apr 05 Python
Pygame的程序开始示例代码
May 07 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
python3实现磁盘空间监控
Jun 21 #Python
Python实现的远程登录windows系统功能示例
Jun 21 #Python
python3监控CentOS磁盘空间脚本
Jun 21 #Python
python实现猜单词小游戏
May 22 #Python
python2.x实现人民币转大写人民币
Jun 20 #Python
python实现猜数字小游戏
Mar 24 #Python
python实现人民币大写转换
Jun 20 #Python
You might like
php Memcache 中实现消息队列
2009/11/24 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
浅谈Python中的数据类型
2015/05/05 Python
Python 含参构造函数实例详解
2017/05/25 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
python 实现IP子网计算
2021/02/18 Python
日语专业毕业生自荐信
2013/11/11 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
联谊活动策划书
2014/01/26 职场文书
工程招投标邀请书
2014/01/26 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
劳模先进事迹材料
2014/12/24 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
详解Vue的options
2021/05/15 Vue.js
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
springcloud整合seata
2022/05/20 Java/Android