• 监控日志被攻击情况-小练习


    需求

    1、监控日志文件,记录攻击次数较多的IP

    分析
    #1、打开日志文件;
    #2、把IP地址拿出来;
    #3、判断每个IP出现的次数,如果大于50次,加入黑名单

    其它知识点

    #文件名柄,文件对象都是指执行open后打开的对象
    #f.readline()#一行一行的读,节省内存资源;
    #f.read()#如果用read来读是一次性把文件的所有内容读进内存,如果文件特别大,内存资源又小的情况下,有可能把内存撑爆;
    #直接循环1个文件对象,每次循环的是文件的每一行,循环什么时候循环结束了代表文件内容就读完了;for line in f:
    #日志读取为1分钟读取一次,可以用time.sleep(60)方法;
    #由于每次读取日志时都是从第一行开始读取,但实际操作中应该是接着从上次读取的位置开始读取;可以使用f.tell方法,获取当前指针位置;
    #想取一个值大于等于几的次数:循环列表取值,列表中这个值出现的次数用all_ips.count(ip)>50;
    import time
    point=0 #每次记录指针的位置
    while True:
        all_ips = []
        f = open('access.log', encoding='utf-8')
        f.seek(point)
        for line in f:
            ip = line.split()[0]
            all_ips.append(ip)
        point=f.tell()
        all_ip_set = set(all_ips)
        for ip in all_ip_set:
            if all_ips.count(ip) > 50:
                print('加入黑名单的IP是%s'%ip)
        time.sleep(60)#暂停60S
    
    import time
    
    ip_lis=[]
    point=0
    while True:
        with open('access.log', encoding='utf-8') as f:
            f.seek(point)
            for line in f:
                ip = line.split()[0]
                ip_lis.append(ip)
            point = f.tell()
            ip_lis_set = set(ip_lis)
            for i in ip_lis_set:
                if ip_lis.count(i) >= 50:
                    print('加入黑名单的IP有:%s' % i)
            time.sleep(60)
  • 相关阅读:
    git 命令图解
    tensorflow 保存及其加载
    tensorflow estimator 与 model_fn 是这样沟通的
    面向过程、面向函数、面向对象的区别浅谈
    Python 中自定义spark转换器
    pyspark 好用多了,放弃scala
    variable_scope 与 name_scope 区别
    tensorflow 条件语句与循环语句
    html 标签内部元素上下居中
    html 标签内部元素左右居中
  • 原文地址:https://www.cnblogs.com/ruijie/p/10207617.html
Copyright © 2020-2023  润新知