最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-09 09:16:46
文档

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)
推荐度:
导读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)


#!/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)

文档

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)
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top