iptable屏蔽和解禁ip和ip段

今天发现2个异常ip段,1天上万次访问,决定屏蔽它!
首先,判断是ip还是ip段,这里用shell中的grep来匹配ip段:
# ip : xxx.*.*.* \| xxx.0.0.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0|\*][.][0|\*][.][0|\*]’ | /usr/bin/wc -l`
如果是1,则是匹配上了。
同理:
# ip : xxx.xxx.*.* \| xxx.xxx.0.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0|\*][.][0|\*]’ | /usr/bin/wc -l`
# ip : xxx.xxx.xxx.* \| xxx.xxx.xxx.0
count=`/bin/echo “$ip” | /bin/grep ‘[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0|\*]’ | /usr/bin/wc -l`
剩下的就是ip了。

ip2是ip对应的0段ip,如ip是xxx.*.*.*:ip2=`/bin/echo “$ip” | /usr/bin/awk -F’.’ ‘{print $1″.0.0.0″}’`
如果是ip xxx.*.*.* \| xxx.0.0.0格式,先判断是否已经屏蔽过了,如果没有,则屏蔽它:/sbin/iptables -I INPUT -s $ip2/8 -j DROP
如果是ip xxx.xxx.*.* \| xxx.xxx.0.0格式,屏蔽命令是:/sbin/iptables -I INPUT -s $ip2/16 -j DROP
如果是ip xxx.xxx.xxx.* \| xxx.xxx.xxx.0格式,屏蔽命令是:/sbin/iptables -I INPUT -s $ip2/24 -j DROP

如果是想解禁ip,则将-I修改为-D即可:/sbin/iptables -D INPUT -s $ip2/24 -j DROP

macbook下的svn服务的备份和恢复

因为之前macbook的硬盘坏了,代码都存在svn中,需要重新建立svn服务器,并恢复代码。

一、启动svn服务

因为macbook下的svn服务是自带的,只需要在svn服务目录下,重新设置启动目录即可。命令如下:

svnserve -d -r /document/project/svn/

二、备份svn库

假设module是需要恢复的模块,备份路径是PATH,命令如下:

/usr/bin/svnadmin dump ./$module/ > ./$PATH/svn.$module.bak

显示

* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.
* Dumped revision 4.
* Dumped revision 5.

三、恢复svn库

首先需要新建一个新的module代码库

/usr/bin/svnadmin create $module

然后执行恢复命令,将svn备份导入到新的代码库中

/usr/bin/svnadmin load ./$module/ < ./$PATH/svn.$module.bak

显示

<<< Started new transaction, based on original revision 1
* editing path : trunk … done.

——- Committed revision 1 >>>

<<< Started new transaction, based on original revision 2
* editing path : branches … done.

——- Committed revision 2 >>>
至此,svn服务恢复完毕。在host文件设置svn的域名后,就可以通过TortoiseSVN访问了。

做一个批量处理的脚本

cat restore-old-svn.sh
#!/bin/bash
PATH=svn-backup-2016
MODULE=$1
if [ -z $MODULE ] ; then
echo ./restore-old-svn.sh \$module
exit
fi
/usr/bin/svnadmin dump ./$module/ > ./$PATH/svn.$module.bak
/bin/mv $module ./$PATH/$module-old
/bin/mkdir $module
/usr/bin/svnadmin create $module
/usr/bin/svnadmin load ./$module/ < ./$PATH/svn.$module.bak
/bin/echo Restore svn $module finish