#1、1分钟之内ip访问次数超过200次的,就给他的ip加入黑名单
#需求分析:
#1、读日志,1分钟读一次
#2、获取这1分钟之内所有访问的ip
#3、判断ip出现的次数,如果出现200次,那么就加入黑名单
#4、因为每次读文件的时候,都是从文件开头开始读的,所以导致重复读了以前已经读过的
#5、要记录每次读完之后的,文件指针,再用seek移动到那个位置 tell()
import time
pin=0
while True:
ips = []
fr = open('access.log')
fr.seek(pin)
for line in fr:
ip = line.split()[0] #因为日志文件中每行的首个字符串是ip,与后面字符之间的分割是符号空格,所以用split()分割后,返回的list中第一个值就是ip地址,取【0】
ips.append(ip)
new_ips = set(ips) #转换为集合
for new_ip in new_ips:
if ips.count(new_ip)>200:
print('加入黑名单的ip是:%s'%new_ip)
pin = fr.tell() #记录读完的指针位置
time.sleep(60)