# 找到日志文件log中超过20次的ip地址(安全漏洞的设置,1分钟读取数据1次,循环读取,找到高危ip地址)
# 打开文件
# 依次读取文件的每行
# 取到每行的ip地址 split
# 获取到的ip值存放字典,存放次数{'ip1':1,'ip2':2,'ip3'} ip 是key,次数是value
# 循环字典,如果val 大于20,那么就输出来
# 每分钟监控上述内容
import time
point=0
while True: #一直循环
with open('access.log', encoding='utf-8') as f: # 当前状态下的文件内容
f.seek(point)
ips = {}
for line in f:
ip = line.split()[0] # 取到ip地址 不填写值,默认是空的情况下分隔1
if ip not in ips: # 判断ip是否出现过,没有出现过ip的次数就是1
ips[ip] = 1
else: # 出现过的话,次数在原来的基础上+1
ips[ip] += 1
point=f.tell() #获取当前读的位置记录下,下次从该位置再次读
for k, v in ips.items():
if v >= 20:
print('有问题的ip地址是%s' % k)
time.sleep(60) #等待一分钟