您好,欢迎来到酷申汽车网。
搜索
您的当前位置:首页python监控日志并发送邮件报警

python监控日志并发送邮件报警

来源:酷申汽车网


#!/usr/bin/env python
#coding:utf8
import re
import os
import time
import smtplib
import socket
import fcntl
import struct
from email.mime.text import MIMEText
def get_ip_address(ifname):
 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 return socket.inet_ntoa(fcntl.ioctl(
 s.fileno(),
 0x15, # SIOCGIFADDR
 struct.pack('256s', ifname[:15])
 )[20:24])
 
def sendemail(subject,msg,fromemail,emailpasswd,toemail):
 '''实现发送邮件功能函数'''
 _user = fromemail
 _pwd = emailpasswd
 _to = toemail
 nowtime = time.strftime('%Y-%m-%d %H:%M:%S')
 
 msg = MIMEText(msg)
 msg["Subject"] = subject
 msg["From"] = _user
 msg["To"] = _to
 
 try:
 s = smtplib.SMTP_SSL('smtp.qq.com', 465)
 s.login(_user, _pwd)
 s.sendmail(_user, _to, msg.as_string())
 s.quit()
 print "[%s]INFO:Email send Success!" % nowtime
 except smtplib.SMTPException,e:
 print "[%s]ERROR:Email send Falied,%s" % (nowtime,e) 
def matchkeyword(pattern,alertlogfile):
 '''实现匹配关键字函数'''
 re.compile(pattern)
 posfile = "/tmp/posfile"
 if not os.path.exists(posfile):
 os.mknod(posfile)
 if not os.path.getsize(posfile):
 with open(posfile,'w') as fobj:
 fobj.write('0') 
 #打开文件
 f = open(alertlogfile,'r')
 #移动到文件结尾
 f.seek(0,2)
 #读出文件所在的字节位置
 endpos = f.tell() 
 #移动到文件的开头
 with open(posfile,'r') as fobj:
 startpos = int(fobj.read())
 f.seek(startpos)
 
 if endpos-startpos > 0: 
 data = f.read(endpos-startpos)
 f.close()
 with open(posfile,'w') as fobj:
 fobj.write(str(endpos))
 m = re.findall(pattern, data,re.IGNORECASE)
 if m:
 content = '\n'.join(m) 
 return content
 else:
 return ''
 
if __name__ == '__main__':
 local_ip = get_ip_address('eth0')
 subject = '服务器[%s]日志报警了!' % local_ip
 fromemail = 'xxxxxxxx@qq.com'
 #emailpasswd为QQ邮箱的授权码
 emailpasswd = 'mdkuasfhnjbrbhdj'
 toemail = 'xxxxxx@qq.com'
 alertlogfile = "/data/mysql/mysql_3306/log/error.log"
 #pattern = ".*\[Warning\].*\s|.*\[Note\].*\s"
 pattern = ".*Warning.*\s|.*error.*\s"
 while True:
 content = matchkeyword(pattern, alertlogfile)
 if content:
 sendemail(subject, content, fromemail, emailpasswd, toemail)

Copyright © 2019- kushenhuo.com 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务