!/bin/sh . /etc/init.d/functions
待检测的 URL 列表
array=( "http://blog.oldboyedu.com" "http://blog.etiantian.org" "http://oldboy.blog.51cto.com" "http://10.0.0.7" )
等待效果,输出进度
wait_for_start() { echo -n "Start Curl_check" for n in 1 2 3; do echo -n " ." sleep 1 done echo action "Curl_check is start!!!!!!" /bin/true }
使用 curl 检测 URL 的 HTTP 状态和实际请求的跳转目标
check_url() { local url="$1" # -s 静默 -S 失败时显示错误 -L 跟随跳转 -o /dev/null 抑制输出 # -w 输出:HTTP 状态码 和 最终跳转的 URL(如果有) local result result=$(curl -s -S -L -o /dev/null -w "%{http_code} %{url_effective}\n" "$url") local code code=$(echo "$result" | awk '{print $1}') local final_url final_url=$(echo "$result" | awk '{print substr($0, index($0,$2))}')
if [ "$code" = "200" ]; then
action "$url ok (200) -> $final_url" /bin/true
elif [ "$code" = "301" ] || [ "$code" = "302" ]; then
action "$url redirects ($code) -> $final_url" /bin/true
else
action "$url error (code $code) -> $final_url" /bin/false
fi
}
main() { wait_for_start
遍历数组,逐个检查
for i in "${!array[@]}"; do
check_url "${array[$i]}"
sleep 1
done
}
main "$@"