# qianxiao996精心制作
#博客地址:https://blog.csdn.net/qq_36374896
#!/usr/bin/python
#-*- coding: utf-8 -*
import time,os,smtplib,socket,threading
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication #发送邮件
def sendemail(email,data,name):
print(data)
mail_host = "smtp.qq.com" # 设置服务器
mail_user = "qianxiao996@126.com" # 用户名
mail_pass = "qneiaxxxxdgjj" # 口令
emaillist = mail_user.split('@')
senddata = '错误信息如下:'+"\n\n"+data+"\n"+"此条信息由系统自动发送!如有错误,敬请谅解!" me = emaillist[0] + "<" + mail_user +">" # 这里的hello可以任意设置,收到信后,将按照设置显示
msg = MIMEMultipart()
msg['Subject'] = name # 设置主题
msg['From'] = me # 发送者
msg['To'] = ";".join(email) # 接收者
# ---邮件正文---
part = MIMEText(senddata, _charset='utf-8') # 将错误文件内容做为邮件正文内容
msg.attach(part) try:
s = smtplib.SMTP()
s.connect(mail_host) # 连接smtp服务器
s.login(mail_user, mail_pass) # 登陆服务器
s.sendmail(me, email, msg.as_string()) # 发送邮件
s.close()
return True
except Exception as e:
print(str(e).encode('gb2312').decode('utf-8'))
return False #检查日志文件
def checklog(accept_email,filepath,name):
file = open(filepath, 'r', encoding='utf-8')
file.seek(0, os.SEEK_END) #文件的相对结束位置
error_list=""
ip = get_ip()
host = '通知:'+'主机 '+ip+' 的 '+name+' 服务出现错误!'
#print(host)
while True:
where = file.tell() #返回文件的当前位置。
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
if error_list != "":
sendemail(accept_email, error_list,host)
error_list=""
else:
error_list+=line+'\n' if len(error_list)>10000:
sendemail(accept_email,error_list,host)
error_list = ""
#得到IP
def get_ip(): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip if __name__ == '__main__': accept_email = ['qianxiao996@126.com'] middleware_name='Apache 2.4'
middleware_path = r"C:\phpStudy\PHPTutorial\nginx\logs\error.log" php_name = 'PHP 2.7'
php_path = 'C:\phpStudy\PHPTutorial\php\php\php_error.log' #中间件
middleware= threading.Thread(target=checklog, args=(accept_email,middleware_path,middleware_name))
#php
php= threading.Thread(target=checklog, args=(accept_email,php_path,php_name))
middleware.start()
php.start()

python Apache和php错误日志邮件报警的更多相关文章

  1. 监测mysql错误日志,有错误自动邮件报警

    监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ...

  2. Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例

    遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...

  3. 在Linux系统上查看Apache服务器的错误日志

    错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器.根据你 Web 服务器配置的不 ...

  4. [转]PHP错误日志

    对 于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息 而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...

  5. linux(centos8):zabbix配置邮件报警(监控错误日志)(zabbix5.0)

    一,zabbix5.0发邮件报警的准备工作: zabbix5.0在linux平台上的安装:参见这一篇: https://www.cnblogs.com/architectforest/p/129125 ...

  6. python实现监控URL的一个值小于规定的值--邮件报警

    监控URL的一个值小于规定的值--邮件报警 #!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'liudong' import urll ...

  7. Apache错误日志时时查看

    做项目的时候,有时候会需要查看一下apache的错误日志,然后就需要很繁琐的打开那个目录下面,看信息,只有当错误的时候我才会去打开那个文件. 但是最近我发现在开发的时候,自己忽略掉了很多错误,虽然不会 ...

  8. PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

    当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...

  9. 如何分析apache日志[access_log(访问日志)和error_log(错误日志)]

    如何分析apache日志[access_log(访问日志)和error_log(错误日志)] 发布时间: 2013-12-17 浏览次数:205 分类: 服务器 默认Apache运行会access_l ...

随机推荐

  1. 十年OI一场空,不开long long见祖宗

    //线段树:单点修改+区间求和 #include<bits/stdc++.h> #define ll unsigned long long using namespace std; ll ...

  2. Linux系统安装(CentOS-7)详细操作步骤

    Linux系统安装(CentOS-7)详细操作步骤 一.创建虚拟机 首先创建一个虚拟机,然后才能在虚拟机里面安装系统. 第一步,创建虚拟机的向导 第二步,兼容性默认即可. 第三步,我们等创建完虚拟机后 ...

  3. Solution -「洛谷 P6292」区间本质不同子串个数

    \(\mathcal{Description}\)   Link.   给定长度为 \(n\),仅包含小写字符的字符串 \(s\),\(m\) 次询问,每次询问一个子串 \(s[l:r]\) 的本质不 ...

  4. LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说明

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

  5. vmstat监视内存的使用情况

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存.进程.CPU活动. vmstat的语法 vmstat [-V] [-n] [ ...

  6. 前端点击png透明部分解决方案

    看效果:点击空白区域红色1.点击实体区域红色2.分别得到颜色数据(包括透明度数据),控制台蓝色1.2.根据颜色数据即可解决png透明部分的点击问题. 让图片不能点击,分两种 1. 整张图片不能点击.这 ...

  7. NSSCTF-[SWPU 2019]伟大的侦探

    下载附件得到一个压缩包,解压需要密码,但是得到一个"密码.txt"的文件,打开查看 根据菜狗的刷题经验,这是个EBCDIC的编码,打开010编辑器,打开"密码.txt&q ...

  8. 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除

    剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...

  9. 【vs2019 】调试技巧

    在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...

  10. 【C#基础概念】程序集清单

    .NET Core 程序集(模块)还包含描述程序集本身的元数据,我们称之为清单.清单记录了当前程序集正常运行所需的所有外部程序集.程序集的版本号.版权信息.模块 .资源(图片 xml等)等.与类型元数 ...