#!/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 "$@"