zoukankan      html  css  js  c++  java
  • python小练习:监控日志

    要求:

      ①如果一分钟之内某个ip访问超过100次,就把它找出来

    日志局部截图

    思路:

      ①根据日志内容,可以使用split分割,取第一个元素

      ②找出所有的ip,统计次数

      ③判断每个ip次数,超过100次,就发邮件

      ④记录文件指针,给下次读的时候用

      ⑤等待60秒,重新读取文件

     1 import time  #引入time模块
     2 point=0   #存放的是文件初始的位置,如果不写,会提示point未定义,因为代码是从上往下读取的,第一次并未读取到point,所以我们需要先定义point的初始值
     3 while True:      #写一个死循环,因为文件是一直在读取中的,60秒重新读取一次
     4   with open('access.log',encoding='utf-8') as f:  #打开日志文件
     5       f.seek(point) #再次打开文件时,获取文件指针的位置
     6       ip_info={}    #定义一个空字典,存放ip和他出现的次数
     7       for line in f:     #循环日志文件每行内容
     8          ip = line.split()[0]  #我们需要找到ip,文件内是以空格分割的,所以我们只需要默认split就可以,然后我们找到ip,下标为0的元素
     9   #到这一步的时候,我们就可以将文件内的ip全部找出,可以使用print(ip)来查看一下是否实现此功能。
    10          if ip in ip_info:     #我们需要判断一下ip是否在字典中
    11             ip_info[ip]+=1    #ip在字典中,我们就给它在原来的值里+1
    12          else:
    13             ip_info[ip]=1    #ip如果不在字典中,ip的次数就等于1
    14       point=f.tell()        #循环结束后,tell()表示获取当前指针的位置
    15       for k in ip_info:       #循环ip_info每一行数据  
    16          if in_info.get(k)>=100:    #判断如果ip_info[k]的值大于等于100次
    17             print('该ip正在攻击你!%s'%k) #输出
    18      
    19   time.sleep(60)       #停止60秒,等60秒之后再继续运行
  • 相关阅读:
    减肥 day1
    这两天的学习内容
    小马激活工具激活系统导致系统崩溃
    mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装
    JDK 动态代理实现原理
    php ajax提交post请求出现数组被截断情况的解决方法
    mac OS X下git代码行统计命令
    mac OS X下安装Redis及Thinkphp3.1使用Redis
    linux服务器git pull/push时提示输入账号密码之免除设置
    linux服务器修改ftp默认21端口方法
  • 原文地址:https://www.cnblogs.com/miyuki/p/9178987.html
Copyright © 2011-2022 走看看