Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2154030
  • 博文数量: 227
  • 博客积分: 10521
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-20 14:59
个人简介

低调做人,高调做事!

文章分类

全部博文(227)

文章存档

2013年(4)

2012年(8)

2011年(16)

2010年(24)

2009年(92)

2008年(83)

分类: LINUX

2008-03-14 11:09:33

最近有台机器出现这样的情况,apache服务存在,查看进程和端口都存在,但是,这个时候打开网页打不开,我认为此时apache服务是由于某种原因死掉了,重新启动apache后解决问题。

解决思路:所以现在就想通过一个监控脚本,来定时访问apache里面的测试页面,看返回的页面是否可以返回定义的值“true”,如果失败,就重试3次,失败就发送邮件到。

脚本如下:

#!/bin/bash
# Program:
#         This program is used to show "Hello World !" in screen.
# History:
#         2007/08/23        chentao        1.1
#---------------------------------------------------------------
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

MaxTryNums=6;
MaxTimeout=6;
file=/usr/local/crontab/testlist
recive="true"

cat $file | while read LINE
do
        echo $LINE
        domain=$( echo $LINE | awk -F"/" '{print $3}')
        echo $domain
        ipaddr=$(ping -c1 $domain | grep -o "\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)" | head -1)
        echo $ipaddr
        result=$((GET -t $MaxTimeout $LINE) 2>/dev/null | grep "$recive")
        echo $result
        if [ "$result" != "" ];then
                echo "test ok"
        else
                echo 'retry............................'
                trynums=0
                total=0
                while [ "$trynums" -le "$MaxTryNums" ];do
                        error=$((GET -t $MaxTimeout $LINE) 2>/dev/null | grep "$recive")
                        if [ "$error" != "" ];then
                                echo "test_retry ok"
                                break
                        else
                                sleep 60
                                trynums=$(($trynums+1))
                                total=$(($total+$total))
                                echo "$trynums times"
                        fi
                done
                if [ $trynums = 7 ];then
                        echo "$ipaddr httpd is fail"
                        /bin/mail -s $ipaddr-httpd-down  -- -f root@sina.net
                fi
        fi
done

1,在apache服务器上建立一个测试页面---test.html,内容---true.

2,在监控机器上建立usr/local/crontab/test文件,格式如下:

  

3,建立shell脚本如上内容。

4,crond任务,5分钟运行一次就ok了。

阅读(1792) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~