脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python监控文件并且发送告警邮件

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

2021-03-07 00:2099zhenzhen Python

这篇文章主要为大家详细介绍了python监控文件,并且发送告警邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

一、配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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,
}

二、监控

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#-*- 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使用QQ邮箱发送Email的方法实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/kelindame/article/details/71430325

延伸 · 阅读

精彩推荐