#需求:
#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秒读一次