文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>自动防盗链脚本

自动防盗链脚本

时间:2008-07-14  来源:jackylau

[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 http://$IP/server-status|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 http://www.colorme.com.cn/cooperate/hot [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 http://$IP/server-status|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 http://$IP/server-status|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
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载