Python监控日志中经常访问的ip

一、需求:每分钟检查一次日志文件,如果这一分钟内同一个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后开始下一个循环
原文地址:https://www.cnblogs.com/jessicaxu/p/7679397.html