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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
Python第三方库的安装方法总结
Jun 06 Python
python实现汉诺塔方法汇总
Jul 25 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
利用Python如何生成便签图片详解
Jul 09 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
Apache部署Django项目图文详解
Jul 30 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
PyMongo 查询数据的实现
Jun 28 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
德劲1103的维修打理经验
2021/03/02 无线电
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
javascript学习网址备忘
2007/05/29 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python正则中最短匹配实现代码
2018/01/16 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Python 硬币兑换问题
2019/07/29 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
承诺书格式范文
2014/06/03 职场文书
献爱心标语
2014/06/21 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
python文件目录操作之os模块
2021/05/08 Python
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python