shell脚本监控另一个脚本,挂掉后重启

post by rocdk890 / 2013-7-2 9:31 Tuesday linux技术
  本文是根据Shell脚本防攻击一例这篇文章再进行改的,像原作者那样服务器晚上被攻击的话,他写的脚本可以到监控攻击到早上9点,如果攻击者连续攻击个几天,不可能每天都去看下脚本是否还存活在,所以我整了个下面这个脚本来监控这.
  系统:centos 5.9
脚本1:
vi fengip.sh
#! /bin/bash
for i in `seq 1 32400`
do
sleep 1
x=`tail -500 access.log |grep 'HTTP/1.1" 499 0 "-" "Opera/9.02'|awk '{print $1}'|sort -n|uniq`
if [ -z "$x" ];then
echo "kong" >>/dev/null
else
for ip in `echo $x`
do
real=`grep -l ^$ip$ all`
if [ $? -eq 1 ];then
echo iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
echo $ip >>all
fi
done
fi
done
这是原作者的封攻击者ip脚本.
脚本2:
vi check-shell.sh
#!/bin/bash
CheckProcess()
{
        if [ "$1" = "" ];
        then
                return 1
        fi
    PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
    if [ $PROCESS_NUM -eq 1 ];
    then
        return 0
    else
        return 1
    fi   
}
while [ 1 ] ; do
    CheckProcess "./fengip.sh"
    CheckQQ_RET=$?
    if [ $CheckQQ_RET -eq 1 ];
    then
     killall -9 fengip.sh
     exec ./fengip.sh &
    fi
    sleep 1
done
这是监控原作者脚本的shell脚本.

使用方法:
把上面2个脚本放在一个目录下,然后执行
chmod +x fengip.sh
chmod +x check-shell.sh
nohup ./check-shell.sh &

ps aux|grep fengip.sh
ps aux|grep check-shell.sh
如果可以看到进程里有这2个脚本,那说明是成功的,如果没有请自己检查下问题出在那.

本文参考:
http://yaozb.blog.51cto.com/2762349/882176
http://nodonkey.iteye.com/blog/625433
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-395.html

附件下载:
封ip和监控shell脚本.rar 680字节

标签: shell 脚本 监控 重启 攻击 封ip

评论: