使用办法:可以将下面的sh保存到一个单独的文件中,比如ipad.sh,然后再编辑获取IP地址列表中的那段。最终的结果是需要直接获取到IP地址,一行一个,可以有多个文件,一行一个,进行重定向到指定的IP文件中

然后再对比iptables现在的IP,没有的再进行添加至iptables中。

可接一个变量,不等于空就执行屏蔽地址段的操作

#!/bin/bash
#Filename:ipad.sh
#Version: 0.1 -- cs NOWTIME=`date "+%Y-%m-%d %H:%M:%S"`
OLDIPFILELIST="/tmp/iplist"
NEWIPFILELIST="/tmp/ipnewlist"
LOGBANK="/var/log/ipbank" #printlog 函数说明
#两个参数,一,是否打印日志,二,日志内容
#一可选,,,0表示不打印日志内容出来,1表示打印日志内容出来
LOGFILE_PATH="/var/log/ipbank"
#LOGFILE_PATH="/var/log/mailcaojc-server"
NOWTIME=`date "+%Y-%m-%d %H:%M:%S"`
function printlog()
{
LOG_CONTENT="$NOWTIME $2"
#echo $LOG_CONTENT
if [ $ -ne ]; then
echo $LOG_CONTENT
echo $LOG_CONTENT>>$LOGFILE_PATH
else
echo $LOG_CONTENT>>$LOGFILE_PATH
fi
} #检查上一条命令执行是否正常,不正常退出
check_error_exit()
{
RUSELT=$?
if [ ${RUSELT} -ne ]; then
printlog "#[ERROR] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
printlog "#[ERROR] 恭喜,光荣而伟大的报错了 : " $
printlog "#[ERROR] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
exit
fi
} printlog ">>>>>>>>>>>>>>>>>>>>START IPADD<<<<<<<<<<<<<<<<<<<<<<<<<" #检查ipTABLES现在屏蔽的IP地址
printlog "准备获取iptables..."
IPOLDLIST=`iptables -L -n|egrep 'DROP'|awk '{print $4}'|sort|uniq>$OLDIPFILELIST`
check_error_exit "获取现在iptables的IP失败,请检查iptables的命令是非正常!!!"
printlog "获取iptables成功!共:`echo ${IPOLDLIST}|wc -l`条记录" #此段为需要屏蔽然IP 地址列表
printlog "准备获取需要屏蔽那些IP地址..."
################################################
#下面可以添加多个需要获取的IP,比如在其它的日志文件中也需要进行屏蔽掉也是可以的
#最终截取IP进行重定向到>>$NEWIPFILELIST 这个文件中就可以了
IPNEWLIST=`cat /usr/local/*/app/log/rulefilter.log|egrep '@qq.com.*aa@aa.com'|awk '{print $6}'|sed 's/,//g'|sort|uniq>$NEWIPFILELIST`
IPNEWLISTA=`cat /usr/local/*/app/log/rulefilter.log|egrep '@163.*aa@aa.com'|awk '{print $6}'|sed 's/,//g'|sort|uniq>>$NEWIPFILELIST`
################################################
printlog "获取需要屏蔽的IP地址成功!!!共:`cat ${NEWIPFILELIST}|wc -l`条记录" printlog "计算对比需要添加的ip..."
#防止上面有重复的,再次进行排序,然后重写到ipnewlist2的文件中
cat ${NEWIPFILELIST}|sort|uniq>/tmp/ipnewlist2
#检查与当前已经屏蔽的IP差,然后进行屏蔽新的IP地址
IPLIST=`diff ${OLDIPFILELIST} /tmp/ipnewlist2|egrep '> '|sed 's/> //g'`
IPLISTNUM=`diff ${OLDIPFILELIST} /tmp/ipnewlist2|egrep '> '|sed 's/> //g'|wc -l` #echo $IPLISTNUM
#exit #lengthiplis=`echo $IPLIST|wc -l`
#echo $lengthiplis
if [ ${IPLISTNUM} -eq ]; then
#echo "kong"
echo "没有需要添加的IP"
LOG_CONTENT="$NOWTIME 好吧,经过深刻的使用diff进行对比,确定没有新的IP在不停的发邮件过来了。"
echo "$LOG_CONTENT">>$LOGBANK
#printlog ">>>>>>>>>>>>>>>>>>>>>>>>>END IPADD<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
else
printlog "准备将单个IP添加至iptables屏蔽列表中..."
for ipone in $IPLIST:
do
ipa=`echo $ipone|sed 's/://g'`
LOG_CONTENT="$NOWTIME $ipa 屏蔽了此IP"
echo "$LOG_CONTENT">>$LOGBANK
iptables -I INPUT -s $ipa -j DROP
#echo $ipa
done
printlog "单个IP添加完毕。"
fi if [ "$1" == "" ]; then
printlog "不判断IP段"
else
printlog "准备开始分析IP段..."
#进行IP段分析,判断是否有需要添加的IP段
#IPSEG=`cat /tmp/ipnewlist|awk -F "." '{print $1"."$2"."$3}'|sort|uniq -c|sort -n|egrep -v '1 |2 |3 '|awk '{print $2}'`
cat $NEWIPFILELIST|awk -F "." '{print $1"."$2"."$3}'|sort|uniq -c|sort -n|egrep -v '1 |2 |3 '|awk '{print $2".0"}'|sort|uniq>/tmp/ipbankseg
iptables -L -n|grep 'DROP'|grep -w '0/24'|awk '{print $4}'|sed 's/\/24//g'|sort|uniq>/tmp/ipiptablesseg
IPSEGLIST=`diff /tmp/ipbankseg /tmp/ipiptablesseg|grep '< '|sed 's/< //g'`
IPSEGLISTNUM=`diff /tmp/ipbankseg /tmp/ipiptablesseg|grep '< '|sed 's/< //g'|wc -l` #echo $IPSEGLISTNUM
if [ ${IPSEGLISTNUM} -eq ]; then
echo "没有需要添加的IP段"
LOG_CONTENT="$NOWTIME 好吧,经过深刻的使用diff进行对比,确定没有新的IP段需要添加。"
echo "$LOG_CONTENT">>$LOGBANK
else
#echo $IPSEGLIST
printlog "准备添加IP段至iptables屏蔽列表中...."
for ione in ${IPSEGLIST}:
do
isega=`echo $ione|sed 's/://g'`
LOG_CONTENT="$NOWTIME $isega 屏蔽了此IP段"
echo "$LOG_CONTENT">>$LOGBANK
echo $isega
iptables -I INPUT -s $isega/ -j DROP
done
printlog "IP段添加完毕!!!"
fi
fi
printlog ">>>>>>>>>>>>>>>>>>>>>>>>>END IPADD<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"

批量屏蔽符合条件的IP地址《目前仅测Centos 6 版本》的更多相关文章

  1. 批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量,大于指定次数的IP

    批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量 大概的思路是利用sh,从日志中提取出来对应的IP地址,然后再交由python进行对比,判断,最终将需要添加至iptables列表中的IP写入到 ...

  2. 虚拟机快照,克隆,静态ip地址的设置(centos 6.5)

    一.快照 例如,当我们在虚拟机上做实验或是作测试时,难免碰到一些不熟悉的地方,此时做个快照,备份一下当前的系统状态,一旦操作错误,可以很快还原到出错前的状态,完成实验,最终避免一步的失误导致重新开始整 ...

  3. mssql数据库游标批量改动符合条件的记录

    //需求:因为项目刚上传,没有票数,为了表现出一定的人气,须要在一開始把各项目的票数赋一个值 , 但每一个项目不能一样,否则easy看出问题,呵呵 . DECLARE @Id varchar(50) ...

  4. 计算机网络基础之IP地址详解

    计算机网络基础之IP地址详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IP地址概述 1>.什么是IP地址 我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采 ...

  5. 复原IP地址

    这道题有点不好理解 export default (str) => { // 保存所有符合条件的IP地址 let r = [] // 分四步递归处理ip分段 let search = (cur, ...

  6. LeetCode-093-复原 IP 地址

    复原 IP 地址 题目描述:给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 .你可以按任何顺序返回答案. 有效 IP 地址 正好由四个整数(每个整数 ...

  7. Asp.net的IP地址屏蔽功能设计

    "IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开." 由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使 ...

  8. Oracle根据符合条件的数据循环批量更新

    --批量对符合条件的表记录进行更新 --aa代表查询出的符合条件数据的别名 --aa后的表示需要符合的条件 --loop后开始写更新操作 begin for aa in (select a.objec ...

  9. 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解

    楔子: 以Windows系统中IP地址设置界面为参考(如图1), IP地址, 子网掩码, 默认网关 和 DNS服务器, 这些都是什么意思呢? 学习IP地址的相关知识时还会遇到网络地址,广播地址,子网等 ...

随机推荐

  1. kafka的log存储解析——topic的分区partition分段segment以及索引等(转发)

    原文 https://www.cnblogs.com/dorothychai/p/6181058.html 引言 Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互 ...

  2. ubuntu14.04 安装jdk1.8及以上

    安装xmind1.8 碰到jvm版本太低的错误: Version 1.7.0_131 of the JVM is not suitable for this product. Version: 1.8 ...

  3. minicom 抓取log

    使用minicom也有很长时间了,只用minicom抓过uart log,但是从来没有去保存过这个log,也不知道有这个功能.后来在超级终端中发现有这个功能(传送->捕获文字),想想minico ...

  4. Java 多态的实现机制

    http://my.oschina.net/onlytwo/blog/52222 是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体 ...

  5. wepy 小程序云开发

    小程序前段时间更新了云开发的功能,刚听到对时候觉得简直是个人开发者对福音,尤其是对我这样对后端不是很懂对前端傻傻,简直不能太方便,就试了下. 体验二维码: 源码:https://github.com/ ...

  6. python-web自动化-元素定位

    # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By # ...

  7. MySQL学习笔记Windows篇<一> Welcome to MySQL

    MySQL安装完毕后没有图形化操作界面,图形化管理界面需要另行安装,个人比较喜欢Navicat,界面更像SQLserver: 此篇学习笔记所有操作均使用命令行中完成: 1.开启/停止服务 使用MySQ ...

  8. C#各种小问题汇总不断更新

    IIS Express Worker Process已停止工作-->管理员身份运行CMD 输入netsh winsock reset 回车OK 未能从程序集“System.ServiceMode ...

  9. [Unity优化]UI优化(三):GraphicRebuild

    参考链接: https://blog.csdn.net/jingangxin666/article/details/80143176 调试过程: 1.修改Image的颜色 2.Graphic.SetV ...

  10. 中间件weblogic控制台创建数据源报错---根据真实故事改编

    1.在weblogic控制台创建数据源,有报错--不能创建数据源,图免 2.weblogic数据源管理节点所在服务器telnet测试,到数据库1521端口是通的 3.经过请教各路大神,得出结论:由于子 ...