批量检查URL状态的脚本

作者:微信小助手

发布时间:2021-06-02T09:47:20



在企业运维工作中,每一步操作完毕后都应该进行快速有效的检查,这是一名合格运维人员的良好习惯。在我们变更,nginx配置重启(包含reload),要会通过调用脚本获取header信息或模拟用户访问URL来自动检查Nginx的启动是否正常。最大限度的保证服务重启后,能够偶快速确定网站情况,而无需手工敲命令查看。这样如果有问题,快速回退上一版本的配置文件(配置前已做备份)。

#!/bin/bash
#
[ -f /etc/init.d/functions ] && . /etc/init.d/functions

DATE=$(date +%Y-%m-%d-%H-%M-%S)
MAIL=`which mail`
# mail name
NAME=(
liujian
e_yunwei
)
# check urls status
URLS=(
http://192.168.99.233:9004/webfof_login/login
http://www.aaca.com
)

# curl 获取状态码
curl_ip() {
  CURL=$(curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' $1|egrep "200|302"|wc -l)
  return $CURL
}

# 邮件
mail() {
     for m in ${NAME[*]}
     do
         echo "Retry curl $1 again is Failure,Please check url on $DATE" | $MAIL -s "Service state Warning" $m@erichfund.com
     done
}

# 主程序
main() {
   for n in ${URLS[*]}
   do
      curl_ip $n
      if [ $? -eq 1 ];then
         action "curl $n" /bin/true
      else
         action "curl $n" /bin/false
           curl_ip $n
           sleep 10
           if [ $CURL -eq 1 ];then
              action "Retry curl $n again" /bin/true
           else
              action "Retry curl $n again" /bin/false
              mail $n
          fi
      fi
   done
}
main

# crontab 添加定时任务5分钟执行一次。
# */5 * * * * /bin/bash /server/scripts/chk_url.sh &>/dev/null

例如:将百度腾讯阿里网站URL,放置到属组array

array=(
http://baidu.com
http://qq.com
http://taobao.com
)
# chmod +x chk_curl.sh
# sh chk_curl.sh

执行结果如下:

[root@localhost scripts]# sh chk_curl.sh
curl http://baidu.com                                      [  OK  ]
curl http://qq.com                                         [  OK  ]
curl http://taobao.com                                     [  OK  ]

关注

绝对干货的公众号



推荐阅读


实战项目--kkitDeploy(客户端版)(强推,已开源)

实战项目--kkitDeploy(PaaS版)(强推)

实战项目--kkit3.0功能介绍(强推)

实战项目--kkit1.0功能介绍(强推,已开源)

经历贴之---外包接活却坐牢456天完整记录(强推)

脚本之---短信轰炸机

脚本之---QQ微信轰炸机

ansible---一键搭建redis5.0.5集群

工具之---地表最强CMDB自动抓取工具

elk7.9真集群docker部署文档

全球最全loki部署及配置文档

点小花花,让他们知道你“在看”