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之使用Python操作数据库(1)
Nov 25 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
python几种常用功能实现代码实例
Dec 25 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
python实现udp传输图片功能
Mar 20 Python
Python常用数据分析模块原理解析
Jul 20 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
Python实现列表拼接和去重的三种方式
Jul 02 Python
Python anaconda安装库命令详解
Oct 16 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
一个JavaScript继承的实现
2006/10/24 Javascript
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
详解js闭包
2014/09/02 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
vue3.0 上手体验
2020/09/21 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
python类型强制转换long to int的代码
2013/02/10 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
WxPython建立批量录入框窗口
2019/02/27 Python
机关财务管理制度
2014/01/17 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
查摆剖析材料范文
2014/09/30 职场文书
销售代理协议书
2014/09/30 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
降价通知函
2015/04/23 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
Redis持久化与主从复制的实践
2021/04/27 Redis
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript