# 写一个监控脚本,监控某个站点访问是否正常。
## 提示:
## 1.可以将访问的站点以参数的形式提供,例如 sh xxx.sh www.baidu.com
## 2.状态码为2xx或者3xx表示正常
## 3.正常时echo正常,不正常时echo不正常

#!/bin/bash

## 检查本机有没有curl命令
if ! which curl &>/dev/null
then
        echo "本机没有安装curl"
        ## 这里假设系统为Centos
        yum install -y curl
        if [ $? -ne 0 ]
        then
                echo "没有安装成功curl"
                exit
        fi
fi
## 获取状态码
code=`curl --connect-timeout 3 -I $1 -k 2>/dev/null |grep "HTTP" |awk '{print $2}'`

echo "code是:$code"

## 如果状态码是2xx或者3xx,则条件成立
if echo $code |grep -qE '^2[0-9][0-9]|^3[0-9][0-9]'
then
        echo "$1访问正常"
else
        echo "$1访问不正常"
fi

## --connect-timeout 3:指定连接超时时间为3秒。如果在3秒内无法建立与目标服务器的连接,curl将停止尝试并返回错误。
## -I:告诉curl只发送HTTP HEAD请求,而不是完整的GET请求。这样不会收到主体内容。
## -k参数表示"SSL insecure",告诉curl忽略SSL证书验证错误
## grep -qE:使用扩展正则表达式搜索匹配的行,不显示任何输出