Shell 脚本请求 URL判断状态码是否异常并执行相关操作。

示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

fileurl='./check_url.txt'
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
for chkurl in $(cat ${fileurl})  # ${}忽略空格
do
    # -o 输出内容到/dev/null; -s 静默方式 ;-w 定义显示输出格式;"%{http_code}" 在最后被检索的 HTTP(S) 页中被找到的数字的代码
    HTTP_CODE=`curl -o /dev/null -s --head -w "%{http_code}" "${chkurl}"`
    if [ ${HTTP_CODE} -ne 200 ]
    then
        if [ ${HTTP_CODE} == 404 ]
        then
           echo -e "[${DATE_N}]error-${HTTP_CODE}:" $chkurl  >> check-result.txt
           sh /usr/local/bin/restart_php_mysql.sh >> check-result.txt
        fi
        echo -e "[${DATE_N}]error-${HTTP_CODE}:" $chkurl  >> check-result.txt
    else
        echo -e [${DATE_N}]${HTTP_CODE}: $chkurl  >> check-result.txt
    fi
done

放到 crontab 中每隔 5 分钟检测一次。