#!/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(),
0x8915, # 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) 0
0
相关文章
如何搭建多实例mysql环境_mysql多环境共存方案
mysql 自动生成SQL工具_mysql开发效率提升
mysql如何实现学生管理系统_mysql初级项目思路
mysql 开发测试工具推荐_mysql调试类库整理
如何用mysql实现客户管理系统_mysql客户信息管理方法
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。
0
2026.01.26
NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。
1
2026.01.26
关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。
0
2026.01.26
铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。
3
2026.01.26
以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。
1
2026.01.26
oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。
1
2026.01.26
网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗
3
2026.01.26
本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。
25
2026.01.26
热门下载
相关下载
精品课程

