代码片段 读取日志中的IP
in PHPlinux with 1 comment

代码片段 读取日志中的IP

in PHPlinux with 1 comment

代码片段

日志ip读取

最近服务器总是有一些乱七八糟的请求进来,域名解析到我服务器没修改的,检查服务器漏洞的爬虫,尝试访问爆破wordpress后台的,尝试访问已知的路由器漏洞页面的。如下:
get_log_ip_1

于是我新建了个 vhost 把所有直接请求 ip 地址的和一些恶意的请求全都定向到这个 vhost ,并统一返回状态码 666 (╯‵□′)╯︵┻━┻。然后写了个 php 脚本统计日志中记录的这些请求的 ip 地址。定时每天凌晨运行一次,然后抽时间就统一把这些 ip 加到黑名单里。
以下是源码。

代码

PHP脚本

<?php

/**
 * 将日志中的 IP 信息存储到文件中
 * @param   $log_file_path   string     要处理的的文件路径
 * @param   $save_file_path  string     要存储的目标文件路径
 * @param   $explode_str     string     拆分日志中字符串所需参数,默认为' - - '
 * @return  string           执行结果
 */ 
function get_log_ip ($log_file_path, $save_file_path, $explode_str = ' - - ') {
    // 将日志字符串拆分到数组中
    $n0 = fopen($log_file_path, 'r');
    $g = explode("\n", fread($n0, filesize($log_file_path)));
    fclose($n0);
    
    // 按指定规范将字符串截断(只保留IP)(前提是IP在行首)
    foreach($g as $k => $v) {
        $g[$k] = substr($v, 0, strpos($v, $explode_str));
    }
    
    // 数组去重
    $g = array_unique($g);
    
    // 文件操作// 读取文件中的IP
    $nr = fopen($save_file_path, 'r');
    $yuan_ip = explode("\n", fread($nr, filesize($save_file_path)));
    fclose($nr);
    
    // 写入文件末尾
    $n = fopen($save_file_path, 'a');
    foreach($g as $v) {
        // 如果原文件中存在此IP,则跳过
        if(in_array($v, $yuan_ip)){
            continue;   
        }else{
            fwrite($n, $v."\n");
        }
    }
    fclose($n);
    return 'success!';
}
echo get_log_ip($argv[1], $argv[2]);

服务器定时器脚本

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
php 脚本路径 日志文件路径 存放的路径 
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "[$endDate] 任务执行成功"
echo "----------------------------------------------------------------------------"

以下是最近一周的成果:已经采集了 500 多个不同的 ip 了。只要将这些 ip 添加到黑名单或防火墙即可。
get_log_ip_2

PS

Responses
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
  1. @

    Vente De Viagra propecia tener hijos Hoodia Cialis Viagra Preisvergleich

    Reply
  2. @

    Propecia Without Prescription Buy cialis from canada Generic Viagra Paypal Buy 240 Propecia Graduatoria Cialis Super Active 20mg Prezzo Cialis E Viagra buy generic cialis Prix Du Cialis Medicament Delivered Amoxicillin Viagra Dopo Mangiato Generic Quality And Viagra Bentyl Website Discount Cialis Nez Bouche Cailas Cialis Lo Puede Tomar La Mujer price of levitra in canada Propecia Valori Discount Secure Ordering Cheapeast Provera Store Cialis Sur Le Net Cialis Ricetta Propecia Xenadrine Over The Counter Cialis Walgreens Cherche Clomid Synthroid Without A Script cheapest cialis 20mg Flarex Without A Rx Viagracheapindia Viagra Uk Retailers

    Reply
  3. @

    Cialis Lilly 20mg Buy Claravis Accutane cialis 5 mg best price usa Clomid Et Nourrisson Lasix 80 Mg Kaufen Cialis Prix Pharmacie Belgique Viagra Langzeitstudie viagra Cephalexin Penicillin Together Symbicort Canadian Pharmacies Top Best Propecia No Script online pharmacy Costo Levitra 10 Mg In Farmacia Achat Cialis Medicament Herbal Viagra Kaufen Is Priligy Legal In Canada cialis receta europa Amoxicillin 875 Mg Tablet Ra

    Reply
  4. name

    see understand!

    Reply