日志监控文件中获取ip,每一分钟统计一次,超过200次的计入黑名单

一、日志文件access.log

#1、要从日志里面找到1分钟之内访问超过200次的
#2、每分钟都运行一次

#1、读取文件内容,获取到ip地址
#2、把每个ip地址存起来{}
#3、判断ip访问的次数是否超过200次
#4、加入黑名单
import time
point=0
while True: #死循环
    ips={}
    f=open(‘access.log‘,encoding=‘utf-8‘)
    f.seek(point)
    for res in f : #循环取文件里面的每行数据
        ip=res.split()[0] #按照空格分割,取第一个元素就是iP
        if ip in ips: #判断这个IP 是否存在
            # ips[ip]=ips[ip]+1
            ips[ip]+=1  #如果存在的话,次数+1
        else:
            ips[ip]=1  #如果不存在ip的次数就是1
    point=f.tell()  #记录文件指针位置
    for ip,count  in ips.items(): #循环这个字典,判断次数大于200的
        if count>=200:
            print(‘%s,加入黑名单‘%ip)
    time.sleep(60)  #停60秒

原文地址:https://www.cnblogs.com/jingshuhui/p/9595544.html

时间: 2024-08-30 12:04:45

日志监控文件中获取ip,每一分钟统计一次,超过200次的计入黑名单的相关文章

在cmd中获取ip地址和主机名

将下面的文件放到一个bat文件当中,以管理员身份运行. @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ echo "please wait" for /f "tokens=2 delims=:" %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b echo %fsip% s

从资源文件中获取Bitmap

从资源文件中获取Bitmap: [1]先获取Resource,然后可以通过资源ID获取Drawable Drawable d = r.getDrawable(R.drawable.xxx)); [2]通过资源ID获取资源文件的数据流,再获取Bitmap InputStream is = r.openRawResource(R.drawable.xxx); Bitmap bitmap ; ①使用BitmapDrawable: BitmapDrawable bd = new BitmapDrawab

javascript 在js文件中获取路径

如果在*.js文件中获取当自己当前的路径是很重要的. 举个例子,如果一个css文件中引用图片,如background-img: url('./Images/bg.png').那么图片的路径,是相对于css文件而言的. 但是,如果我们再js文件中引用图片,如img.src = './images/bg.png';  但是,图片却不是根据js的相对路径的.而是根据(引用该js)的html的相对路径来决定的.这显然不合理. 所以如果我们能获取js文件的绝对路径的话,就会好很多.譬如 img.src =

第二章 从键盘或文件中获取标准输入:read命令

第二章 从键盘或文件中获取标准输入:read命令 read命令 从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY 语法 read (选项) (参数) 选项: ? -p 指定读取值时候的提示符 ? -t 指定读取值时候等待的时间(秒) 参数: ? 变量 :指定读取值得变量名 查看变量值: echo $变量名 printf $变量名 注

15.从zabbix数据库中获取ip列表

我把监控作为中心节点,所以所有IP地址都从zabbix中提取. 从zabbix数据库中提取IP,有两种方法: (1)直接模糊查询hosts表: 比如查询运维部门的ip:select host from hosts where name like "op%" order by host; 完整代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import MySQLdb reload(sys) sys.setde

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法. 如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页

.NET中获取IP地址

在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其它好的方法,可以回复一起整理: 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostName 获取客户端电脑IP:Page.Request.UserHostAddress 2. 在网络编程中的通用方法: 获取当前电脑名:static System.Net.

shell----批量修改多个文件中的IP地址

有多个文件,每个文件中有127.0.0.1这个IP,需要统一替换成其它IP地址,可以使用该脚本 1 #!/bin/bash 2 3 #请输入要替换的IP 4 read -p "请输入要替换的IP:" ip 5 6 #手动输入文件路径 7 #read -p "请输入文件路径:" file 8 9 #定义文件名称,写入文件名字,用空格隔开 10 file=(1.txt 2.txt 3.txt 4.txt 5.txt 6.txt) 11 12 #循环file 13 for