python处理log日志屏蔽攻击ip

需求:监控日志,如果有攻击,就把ip加入黑名单
分析:
1、打开日志文件,读取文件中的所有的内容
2、提取内容中的ip
3、把ip放入到列表中去,在用set去重,得到独立不同的ip数
4、循环set中的ip,到list中去进行ip个数的统计,超过50次的加入到黑名单

import time
count=0                             #初始的文件指针设置为0
while True:
    ip_list = []                     #每次循环时把列表清空,因为是按1分钟进行统计的
    with open("access.log","r",encoding="utf-8") as fr:
        fr.seek(count)                   #根据文件指针进行文件内容读取
        for line in fr:                  #循环拿每一行内容
            ip_list.append(line.split("-")[0])  #取每一行的ip
        count=fr.tell()                #读完之后更新文件的指针
        for ip in set(ip_list):       #循环读取集合中的ip并到列表中进行统计
            if ip_list.count(ip)>50:
                print("把ip为%s的加入到黑名单"%ip)
        fr.close()    #最后关闭文件句柄
        time.wait(60)

posted @ 2019-08-01 10:01  绿林豪士  阅读(637)  评论(0编辑  收藏  举报