python Apache和php错误日志邮件报警
# 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错误日志邮件报警的更多相关文章
- 监测mysql错误日志,有错误自动邮件报警
		监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ... 
- Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例
		遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ... 
- 在Linux系统上查看Apache服务器的错误日志
		错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器.根据你 Web 服务器配置的不 ... 
- [转]PHP错误日志
		对 于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息 而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ... 
- linux(centos8):zabbix配置邮件报警(监控错误日志)(zabbix5.0)
		一,zabbix5.0发邮件报警的准备工作: zabbix5.0在linux平台上的安装:参见这一篇: https://www.cnblogs.com/architectforest/p/129125 ... 
- python实现监控URL的一个值小于规定的值--邮件报警
		监控URL的一个值小于规定的值--邮件报警 #!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'liudong' import urll ... 
- Apache错误日志时时查看
		做项目的时候,有时候会需要查看一下apache的错误日志,然后就需要很繁琐的打开那个目录下面,看信息,只有当错误的时候我才会去打开那个文件. 但是最近我发现在开发的时候,自己忽略掉了很多错误,虽然不会 ... 
- PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送
		当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ... 
- 如何分析apache日志[access_log(访问日志)和error_log(错误日志)]
		如何分析apache日志[access_log(访问日志)和error_log(错误日志)] 发布时间: 2013-12-17 浏览次数:205 分类: 服务器 默认Apache运行会access_l ... 
随机推荐
- Kubernetes:健康检查
			Blog:博客园 个人 应用在运行过程中难免会出现错误,如程序异常.软件异常.硬件故障.网络故障等.因此,系统通过一些手段来判断应用是否运行正常,这些手段称之为健康检查(诊断). 前置知识 回顾一下P ... 
- python3批量统计用户电脑配置
			最近领导想统计一下用户电脑配置信息.好几百人难道让我一个一个的去弄吗? 想想还是写个程序接收一下吧. 客户端 # -*- coding: utf-8 -*- #author:Guoyabin impo ... 
- java宝典笔记(一)
			第四章java基础知识 4.1基本概念 一.java优点 1.面向对象(封装.继承.多态) 2.可移植性.平台无关,一次编译,到处运行.Windows,Linux,macos等.java为解释性语言, ... 
- MShadow中的表达式模板
			表达式模板是Eigen.GSL和boost.uBLAS等高性能C++矩阵库的核心技术.本文基于MXNet给出的教程文档来阐述MXNet所依赖的高性能矩阵库MShadow背后的原理. 编写高效的机器学习 ... 
- HTTP攻击与防范-PHP客户端脚本攻击
			实验目的 了解客户端脚本植入攻击的方式 掌握防范攻击的方法 实验原理 了解客户端脚本植入攻击的方式 掌握防范攻击的方法 实验内容 了解客户端脚本植入攻击的方式 掌握防范攻击的方法 实验环境描述 1. ... 
- [题解]UVA11029 Leading and Trailing
			链接:http://vjudge.net/problem/viewProblem.action?id=19597 描述:求n^k的前三位数字和后三位数字 思路:题目要解决两个问题.后三位数字可以一边求 ... 
- C#特性(属性)Attribute
			先明确一个概念: 元数据..NET中元数据是指程序集中的命名空间.类.方法.属性等信息.这些信息是可以通过Reflection读取出来的. 再来看个例子: #define BUG //#define ... 
- Echarts图表类型
			每个系列通过 type 决定自己的图表类型: type: 'bar':柱状/条形图 type: 'line':折线/面积图 type: 'pie':饼图 type: 'scatter':散点(气泡)图 ... 
- mapreduce—shuffle图解
- C语言刷数组题记录
			讲解:https://mp.weixin.qq.com/s/weyitJcVHBgFtSc19cbPdw 二分法: 704. 二分查找 int search(int* nums, int numsSi ... 
