#!/bin/sh
. /etc/init.d/functions
# 待檢測(cè)的 URL 列表
array=(
"http://mail.163.com"
"http://mail.sina.com/"
)
# 等待效果,輸出進(jìn)度
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 檢測(cè) URL 的 HTTP 狀態(tài)和實(shí)際請(qǐng)求的跳轉(zhuǎn)目標(biāo)
check_url() {
local url="$1"
# -s 靜默 -S 失敗時(shí)顯示錯(cuò)誤 -L 跟隨跳轉(zhuǎn) -o /dev/null 抑制輸出
# -w 輸出:HTTP 狀態(tài)碼 和 最終跳轉(zhuǎn)的 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
if [[ $code =~ ^2[0-9][0-9]$ ]]; then
action "$url ok (200) -> $final_url" /bin/true
# elif [ "$code" = "301" ] || [ "$code" = "302" ]; then
elif [[ $code =~ ^3[0-9][0-9]$ ]]; then
action "$url redirects ($code) -> $final_url" /bin/true
else
action "$url error (code $code) -> $final_url" /bin/false
fi
}
main() {
wait_for_start
# 遍歷數(shù)組,逐個(gè)檢查
for i in "${!array[@]}"; do
check_url "${array[$i]}"
sleep 1
done
}
main "$@"