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