本脚本出自 老男孩linux运维实战培训中心 shell编程课程脚本案例!
脚本功能:实现对公司网站的url地址检查,把故障通过邮件或者短信的形式报告给管理员,可以同时加入多个监控点,URL地址可以是实际网站地址,也可以是专门的地址,当然,我们也可以结合nagios等软件来实现。
1)脚本内容
[root@nosql01 scripts]# cat check_url_by_oldboy.sh
#!/bin/bash
# this script
is
created
by
oldboy.
# e_mail:31333741@qq.com
# qqinfo:49000448
#
function
: oldboy trainning stripts,check_service.
# version:1.1
################################################
# oldboy trainning info.
# QQ 1986787350 70271111
# site:http://www.etiantian.org
# blog:http://oldboy.blog.51cto.com
# oldboy trainning QQ
group
: 208160987 226199307
################################################
#
set
-x
RETVAL=0
SCRIPTS_PATH=
"/server/scripts"
MAIL_GROUP=
"31333741@qq-.com 49000448@qq-.com"
#MAIL_GROUP=
"18600338340 18911718229"
## web detection
function
LOG_FILE=
"/tmp/web_check.log"
function
Get_Url_Status(){
FAILCOUNT=0
for
(( i=1 ; $i <= 3 ; i++ ))
do
wget -T 15
if [ $? -ne 0 ]
then
let FAILCOUNT+=1;
fi
done
#if 3 times
then
send mail.
if [ $FAILCOUNT -gt 1 ]
then
RETVAL=1
NOW_TIME=`
date
+
"%m-%d %H:%M:%S"
`
SUBJECT_CONTENT=
"http://${HOST_NAME} service is error,${NOW_TIME}."
echo
"send to :$MAIL_USER ,Title:$SUBJECT_CONTENT"
>$LOG_FILE
for
MAIL_USER
in
`$MAIL_GROUP`
do
mail -s
"$SUBJECT_CONTENT "
$MAIL_USER <$LOG_FILE
#sh $SCRIPTS_PATH/sms_send $SUBJECT_CONTENT $MAIL_USER
done
else
RETVAL=0
fi
return
$RETVAL
}
#func
end
.
[ ! -d
"$SCRIPTS_PATH"
] && {
mkdir -p $SCRIPTS_PATH
}
[ ! -f
"$SCRIPTS_PATH/domain.list"
] && {
cat >$SCRIPTS_PATH/domain.list<<EOF
oldboy.blog.51cto.com
bbs.etiantian.org
EOF
}
#service
check
for
HOST_NAME
in
`cat $SCRIPTS_PATH/domain.list`
do
echo -n
"checking $HOST_NAME: "
Get_Url_Status $HOST_NAME && echo ok||echo
no
#Get_Url_Status $HOST_NAME
done
2)演示结果
[root@nosql01 scripts]# sh check_url_by_oldboy.sh
checking oldboy.blog.51cto.com: ok
checking bbs.etiantian.org: no
提示:上面我们看到的仅仅是为了调试而加的,后台已经对故障站进行了邮件及短信报警。
3)生产用法
实际工作中,我们可以结合定时任务调用脚本检查,甚至可以稍加改进,在服务的重启过程中进行检查。