Chinaunix首页 | 论坛 | 博客
  • 博客访问: 70474
  • 博文数量: 27
  • 博客积分: 1096
  • 博客等级: 少尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-13 19:21
文章分类

全部博文(27)

文章存档

2011年(1)

2008年(26)

我的朋友

分类:

2008-07-14 11:13:09

[root@music shell]# crontab -l
*/5 * * * * /tools/shell/url.sh >>/tools/url.log 2>&1
10 */4 * * * /tools/shell/flush_iptables.sh >>/tools/flush.log 2>&1
[root@music shell]# cat /tools/shell/flush_iptables.sh
#!/bin/sh
IPTABLES="/sbin/iptables"
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
>/usr/local/apache2/conf/drop_ip

[root@music shell]# cat /tools/shell/url.sh
#!/bin/sh
#声明被监控的SERVER IP
IP="192.168.200.18"
#声明被DROP掉的IP地址存放文件名
DROP_IP="/usr/local/apache2/conf/drop_ip"
#声明被rewrite的存放文件名
CONF="/usr/local/apache2/conf/rewrite.conf"
#声明被同时下载超过80次的文件(除推荐文件外)
FILES=$(lynx --width=300 --dump |grep "localhost"|grep -v "wma"|awk '{if($14 !~/(song|flash)\//print $14}'|sort|uniq -c|sort -nr|awk '{if($1>80) print $2}')
#声明声明被同时下载超过80次的文件的个数
COUNT=$(echo $FILES|awk '{print NF}')
#如果被同时下载超过80次的文件存在,进行下面的操作
if [ $COUNT -gt 0 ];then
#进行for循环
    for file in $FILES
    do
    #如果此文件已存在在rewrite.conf文件,则不进行任何动作,否则把其写进rewrite.conf文件
    grep -q $file $CONF||echo "RewriteRule ^$file [L]" >>$CONF
    done
#检查apache的语法是否正确,如果正确,则graceful apache
    if [ `/usr/local/apache2/bin/apachectl configtest`="Syntax OK" ];then
        /usr/local/apache2/bin/apachectl graceful
    fi
fi

#声明推荐文件
COMMEND=$(lynx --width=300 --dump |grep "localhost"|awk '{if($14 ~/\/(song|flash)\//)print $14}'|sort|uniq)
#声明推荐文件的个数
COUNT_FN=$(echo $COMMEND|awk '{print NF}')
#声明推荐文件的被同时下载超过80次的IP地址
MULTI_IP=$(lynx --width=300 --dump |grep "localhost"|grep "$COMMEND"|awk '{print $11,$14}'|sort|uniq -c|sort -nr|awk '{if($1>50) print $2}')
#如果推荐文件的个数超过0且推荐文件的被同时下载超过80次的IP地址不为空时,进行下面的操作
if [ $COUNT_FN -gt 0 -a "X$MULTI_IP" != "X" ];then
    for ip in $MULTI_IP
    do
     #如果IP地址已存在drop_ip文件则不操作,否则把此IP给DROP掉,然后追加drop_ip文件
         grep -q $ip $DROP_IP ||(/sbin/iptables -A INPUT -s $ip -j DROP;echo $ip >>$DROP_IP)
    done
fi
阅读(549) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~