本脚本出自 老男孩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 --tries=1 --spider http://${1} >/dev/null 2>&1
- 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)生产用法
实际工作中,我们可以结合定时任务调用脚本检查,甚至可以稍加改进,在服务的重启过程中进行检查。