shell脚本监控另一个脚本,挂掉后重启
本文是根据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
系统: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
附件下载:
封ip和监控shell脚本.rar 680字节
评论: