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 ...
随机推荐
- pytest(8)-参数化
前言 什么是参数化,通俗点理解就是,定义一个测试类或测试函数,可以传入不同测试用例对应的参数,从而执行多个测试用例. 例如对登录接口进行测试,假设有3条用例:正确账号正确密码登录.正确账号错误密码登录 ...
- PHP爱考的那些笔试题
PHP爱考的那些笔试题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. 一.单例模式是在应用程序中最多只能拥有 ...
- 6、架构--Nginx虚拟主机(基于多ip、端口、域名方式)、日志配置、Nginx模块(访问控制模块、状态监控模块、访问链接控制模块)
笔记 1.晨考 2.昨日问题 3.今日内容 1.Nginx虚拟主机 - 基于多IP的方式 - 基于多端口的方式 - 基于多域名的方式 2.日志配置 Nginx有非常灵活的日志记录模式,每个级别的配置可 ...
- 公式编辑器CVE-2018-0798样本分析
当前样本是一个RTF文档,内嵌一个公式编辑器对象,该对象利用Office编辑器漏洞CVE-2018-0798执行shellcode,对EQNEDT32.exe进行代码注入,执行恶意代码. 使用 ...
- 通过PEB寻找函数地址
通过PEB的Ldr参数(结构体定义为_PEB_LDR_DATA),遍历当前进程加载的模块信息链表,找到目标模块. 摘自PEB LDR DATA: typedef struct _PEB_LDR ...
- Https原理与演变
巨人的肩膀 为了一个HTTPS,浏览器操碎了心··· (qq.com)
- python-利用xlrd模块中读取有合并单元格的excel数据
前言 对于excel中有合并单元格的情况,合并的单元格只能取到第一个单元格的值,合并的单元格后面的单元格内容的值为空,针对这个情况,写了下面一段代码实现, 对单元格进行判断,如果是传入的索引是合并单元 ...
- angular访问后台服务及监控会话超时的封装实现
以前一直没有想过写一些东西来把项目中用到的知识点及技术实现做一个归纳整理并分享出来.现在打算逐渐的把项目中的一些东西整理并分享出来,与大家共勉! angular本身自带访问组件http和httpcli ...
- 哪些BI分析商业智能平台是最受欢迎的?
近些年来,AI推动的云生态系统已非常成熟.智能.增强的预测和决策工具处于这样一个阶段:准备好部署到企业中从董事会到车间的各个地方.挑战在于确保贵企业已准备好使用它们.因此,下面介绍了眼下最出色.最受欢 ...
- 【基础知识】cache 管线(Pipeline)的建立便可以提升cpu的性能,为什么还要去发展多核的cpu?
多管线 (Pipeline)的确可以提高主频,比如搭配 NetBurs架构的Pentium4,它拥有20级的管线技术,虽然可以轻易提高主频,但是效率会降低.而且随着频率的上升,功率也大幅上升温度问题也 ...