python-监控日志练习

#需求:
#1. 每分钟监控服务器日志,每分钟请求超过200次,加入黑名单

# 编写思路
# 1. 读文件,获取每行的内容 open readlines
# 178.210.90.90 - - [04/Jun/2017:03:44:13 +0800]
#2. 找到IP地址,按照空格分割字符串,取第一个元素 split
#3. 把IP存到字典里面,每个IP出现一次,IP次数就加1
# {'ip1':1,'ip2':2,'ip3':1}
# ['178.210.90.90','178.210.90.90','178.210.90.90']
#4. 判断IP次数是否大于200,加入黑名单

import time
point=0
while True:
    ips = {} #存放ip地址的
    f = open('abc.txt',encoding='utf-8') # abc.txt存放监控日志
    f.seek(point)
    for line in f.readlines():  #获取每行的内容
        ip = line.split()[0] #获取所有的ip和次数,存到字典里面
        if ip not in ips: #判断ip是不是已经在ips里
            ips[ip]=1 #如果不存在(未出现过),则出现次数是1
        else:
            ips[ip]+=1 #出现过,次数+1
    print(ips)
    point=f.tell()#记录读完之后文件指针
f.close()
for ip,count in ips.items(): #判断ip出现的次数是否大于200 if count>=200: print('[%s]加入黑名单'%ip) time.sleep(60) #60秒读一次
原文地址:https://www.cnblogs.com/denise1108/p/10026811.html