分类 Python 下的文章

需求:监控日志,如果有攻击,就把ip加入黑名单

分析:

1、打开日志文件

2、把ip地址拿出来

3、判断每一个ip出现的次数,如果大于50次的话,加入黑名单

4、每分钟读一次

log样式:

178.210.90.90 - - [04/Jun/2017:03:44:13 +0800] "GET /wp-includes/logo_img.php HTTP/1.0" 302 161 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"178.210.90.90 - - [04/Jun/2017:03:44:13 +0800] "GET /blog HTTP/1.0" 301 233 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"178.210.90.90 - - [04/Jun/2017:03:44:15 +0800] "GET /blog/ HTTP/1.0" 200 38278 "http://nnzhp.cn/wp-includes/logo_img.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" "10.3.152.221"66.249.75.29 - - [04/Jun/2017:03:45:55 +0800] "GET /bbs/forum.php?mod=forumdisplay&fid=574&filter=hot HTTP/1.1" 200 17482 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"37.9.169.20 - - [04/Jun/2017:03:47:59 +0800] "GET /wp-admin/security.php HTTP/1.1" 302 161 "http://nnzhp.cn/wp-admin/s

实现:

import time
point = 0 #每次记录文件指针的位置while True:#持续读取实时更新的log
    all_IP = []
    f=open('access.log',encoding='utf-8')    #不能用read来直接读文件,文件从磁盘打开载入内存,进入cpu分析,若文件过大,内存会被占满,电脑回卡死
    f.seek(point)  # 移动文件指针,已统计过的IP不再额外统计
    for line in f:#直接循环一个文件对象的话,每次循环的是文件的每一行
        IP = line.split('-')[0].strip()#取出IP
        all_IP.append(IP)#将IP放入列表
    point = f.tell()  # 记录了指针的位置
    all_IP_set = set(all_IP)#集合天生去重
    for i in all_IP_set:#循环集合比循环列表效率高,已去重
        if all_IP.count(i) > 50:            print('加入黑名单的IP是%s,一分钟内出现了%s次'%(i,all_IP.count(i)))
    f.close()
    time.sleep(60)#每分钟读一次


1.安装python

 第一步,windows下面的Python安装一般是通过软件安装包安装而不是命令行,所以我们首先要在Python的官方主页上面下载最新的Python安装包。 
 下载地址是:https://www.python.org/downloads/ 
在安装完成之后,打开控制台,输入“Python”,我们能够看到下面的效果: 

 

这里写图片描述 


原因很简单,是因为python.exe文件在 Python 目录下,我们还没有设置环境变量。所以我们需要手动添加环境变量:鼠标右键我的电脑 -> 属性 -> 点击高级系统设置 -> 点击环境变量 -> 点击PATH -> 在最后面加上我们的Python安装路径 -> 点击确定。用一张图来表示就是: 


这里写图片描述

 

添加环境变量的方法,我们在PATH最后添加:

C:\Users\APP_Server\AppData\Local\Programs\Python\Python36\;

在这个过程中需要注意的问题是,添加PATH路径的时候,要在最后面添加一个分号。现在我们再次在浏览器里面输入“Python”,就能直接在控制台出入命令了: 


这里写图片描述

 

 

2.安装pip。

  下载地址是:https://pypi.org/project/pip/#files (win7.8.9.10 下,记得下载压缩文件) 。。。

 

 


    1. 下载完成之后,解压到一个文件夹,用CMD控制台进入解压文件的目录 (目录中不要包含汉字。放到比较好找的位置)

    2. 然后,在文件目录下,输入:python setup.py install

    3. 安装好之后,我们直接在命令行输入pip,同样会显示‘pip’不是内部命令,也不是可运行的程序。因为我们还没有添加环境变量。

       

       

       

       

       

       

       

       

       

    4.  按照之前介绍的添加环境变量的方法,我们在PATH最后添加:(添加变量的时候,g用“;”英文分号的分号隔开)

      C:\Pythonxx\Scripts;

      到现在我们才算完整安装好了pip

       

       

       

      6.装完之后,直接运行 pip .或  pip list .不会弹出pip不在的提示语。

       

       

      最后:(ps:若pip安装完成之后,安装pip下的别的包时,直接在cmd命令后,直接输入“pip install ‘ujson’”)pip install + 要安装的项目