python3固定规则_根据指定规则检查日志--python

该代码段描述了一个Python脚本,用于监控日志文件,查找每天特定格式的数据段(开始时间到结束时间),并在找到内容时生成邮件并上传到服务器。脚本使用正则表达式匹配日志中的时间戳,并在找到匹配项时读取并处理日志内容。邮件内容通过临时文件生成,并使用FTP上传到服务器进行后续的发送操作。
摘要由CSDN通过智能技术生成

指定规则:

对于日志A,日志A每天会增加一次内容,内容格式如下:

start time is:2013-02-06 09:00:00 X行

#中间可能有内容#

end time is:2013-02-06 09:02:32 Y行

如果在X行和Y行之间有内容,则需要将中间包含的内容发邮件给指定人员

实现:

首先需要说明一点,以下代码只是产生邮件文件并且上传到指定服务器,发送邮件的功能由指定服务器进行统一处理。在处理的过程中文件都是以二进制模式打开,不涉及编码的转换,可以避免各种编码造成的问题,只有在确实需要进行文字匹配之前进行解码。邮件文件使用命名的临时文件。

#! /usr/local/bin/python3

import enviroment as eo

import datetime

import re

def check_logs(logpath):

date_format='%Y-%m-%d'

now_format=datetime.datetime.today().strftime(date_format)

re_begin=re.compile('start time is:'+now_format)

re_end=re.compile('end time is:'+now_format)

examine_tag=0

with open(logpath,'rb') as file_name:

line=file_name.readline()

while line:

line=line.decode('gb2312')

if re_begin.search(line):

examine_tag=1

pos=file_name.tell()

line=file_name.readline()

continue

if examine_tag==1:

if re_end.search(line):

return

else:

break

line=file_name.readline()

if pos:

file_name.seek(pos)

warn_content=file_name.read()

eo.send_mail_X('',warn_content)

if __name__=='__main__' :

logpath=''

check_logs(logpath)

enviroment.py中包括以下几个相关函数。

def send_mail_X(mailname,mailcontent):

receivers=[]

gen_mail(receivers,mailname,mailcontent)

def gen_mail(receivers,mailtag,mailname,mailcontent):

data_tag=datetime.datetime.today().strftime('%Y-%m-%d')

with tempfile.NamedTemporaryFile(prefix=mailtag+'.',suffix='.mail') as temp_file:

temp_file.write(('Subject: '+mailtag+''+mailname+' '+data_tag+'\n').encode())

temp_file.write(('From:'+mailtag+''+'\n').encode())

for receiver in receivers:

temp_file.write(('Cc:'+receiver+'\n').encode())

temp_file.write(mailcontent)

temp_file.seek(0)

upload_file_fromtemp(temp_file)

def upload_file_fromtemp(temp_file):

ftp=FTP()

ftp.connect('',21)

ftp.login('','')

filebasename=os.path.basename(temp_file.name)

ftmcmd='STOR '+filebasename

ftp.storbinary(ftmcmd,temp_file)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值