使用办法:可以将下面的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. MySQL Point in Time Recovery the Right Way

    In this blog, I’ll look at how to do MySQL point in time recovery (PITR) correctly. Sometimes we nee ...

  2. 如何在同一主机中添加多个homestead并行开发

    参考源 https://blog.csdn.net/smm188/article/details/79356150 1,在项目目录 git clone homestead 后(见上面流程中的第四步), ...

  3. 使用 tag 文件定义自定义标签

    ----------------------------------------------------------------------- 在jsp文件中,可以引用tag和tld文件. 1.对于t ...

  4. CentOS7.5下安装Mycat连接MySQL8.0

    MyCat详细介绍,请参考https://www.biaodianfu.com/mycat.html 9066管理端口,请参考https://www.cnblogs.com/parryyang/p/5 ...

  5. JS购物车编辑

    实现了:第一件商品的加减实现了:全选/全不选(使用prop而不是attr)实现了:删除(遮罩层) 未实现:第二件商品的删除未实现:小计及应付款额的初始化(写死的) 计算小数乘法时,要先乘100 < ...

  6. Vue todolist练习 知识点

    1.localStorage的用法总结 (1).这儿是什么:局部存储器.它是html5新增的一个本地存储API,所谓localStorage就是一个小仓库的意思,它有5M的大小空间,存储在浏览器中,我 ...

  7. 10-安装es

    1.安装jdk(jdk要求1.8.20或1.7.55以上) 2.上传es安装包 3.解压es tar -zxvf elasticsearch-2.3.1.tar.gz -C /opt/app/ 4.e ...

  8. JAVA性能优化:35个小细节让你提升java代码的运行效率

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  9. cv2的安装

    第一种 ,直接尝试 pip install cv2 ,大可能报错. 第二种,pip install opencv-python ,大概率 直接成功. 第三种 ,去网上下包 放到 sit_package ...

  10. dubbo配置方式简单介绍

    原地址:http://www.cnblogs.com/chanshuyi/p/deep_insight_dubbo_config.html 一.介绍 Dubbo 采用全Spring配置方式,透明化接入 ...