批量查找日志中特殊字符的IP地址,导出IP文件,生成IP列表文件,iptables屏蔽
  • 如何批量查找日志中特殊字符的IP地址? 如何在nginx/apache日志文件,导出IP文件,生成IP列表文件,并加入iptables屏蔽

    满足条件的所有ip地址:

    more log.654z.com.135 |grep baidu|grep Mozilla|grep Showya|awk '{print $1}'>ip.1

    [root@www.654z.com nginx]# more ip.1 | wc
    1488895 1488895 21391447

    居然有148万条记录

     

    过滤掉重复的记录:
    more log.654z.com.135  |grep baidu|grep Mozilla|grep Showya|awk '{print $1}'|sort|uniq>ip.2 


    [root@www.654z.comnginx]# more ip.2 | wc
       1876    1876   26991

     

    原来不重复的只有不到2000个IP
     

    把IP地址/ip文件,批量导入iptables屏蔽起来


    awk '{system("iptables -I INPUT -s "$0" -j DROP ")}' ip.2

     

    自动化:

    vi /backup/www.654z.com/block.ip.sh

    #!/bin/sh
    YEAR=`date +%Y`
    MONTH=`date +%m`
    DAY=`date +%d`
    HOUR=`date +%H`
    MIN=`date +%M`
    DATE=$YEAR-$MONTH-$DAY-$HOUR-$MIN

    more www.654z.com.access.log |grep baidu|grep Mozilla|grep Showya|awk '{print $1}'|sort|uniq>ip."$DATE"
    awk '{system("iptables -I INPUT -s "$0" -j DROP ")}' ip."$DATE"

    需要的时候执行下 sh block.ip.sh 即可。如果要很频繁的执行,可考虑crontab

     

    避免重复添加iptables:

    awk '{system("iptables -D INPUT -s "$0" -j DROP;iptables -I INPUT -s "$0" -j DROP ")}' ip."$DATE"

     

     

  •  

  • 点这里复制本页地址发送给您QQ/MSN上的好友
  • 300*300广告