一、需求:每分钟检查一次日志文件,如果这一分钟内同一个ip请求次数超过200次,加入黑名单
1、日志文件中,每一行的格式为:XXX.XXX.XXX.XXX - - [04/Jun/2017:05:25:04 +0800] "GET...
2、第一步:取出每一行的ip
3、第二步:统计出现次数超过200的ip
4、第三步:每一分钟重新读取一次日志文件,文件中之前已经读取过的内容无需重复检查
二、实现代码
import time pin = 0 while True: with open('access.log', 'r') as f: f.seek(pin) #定位到上次读取文件后,游标的位置 ips = [] for line in f: ip = line.split(' ')[0] #提取每一行的ip,保存到list中 ips.append(ip) for ip in set(ips): if ips.count(ip) > 200: print('要拉黑的ip为: %s'%ip) pin = f.tell() #读取游标当前的位置 time.sleep(60) #休息60s后开始下一个循环