ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

url测试脚本3

url测试脚本3

!/bin/sh

. /etc/init.d/functions

待检测的 URL 列表

array=(
"http://mail.163.com"
"http://mail.sina.com/"
)

等待效果,输出进度

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
if [[ $code =~ ^2[0-9][0-9]$ ]]; thenaction "$url ok (200) -> $final_url" /bin/true
# elif [ "$code" = "301" ] || [ "$code" = "302" ]; then
elif [[ $code =~ ^3[0-9][0-9]$ ]]; thenaction "$url redirects ($code) -> $final_url" /bin/true
elseaction "$url error (code $code) -> $final_url" /bin/false
fi

}

main() {
wait_for_start

# 遍历数组,逐个检查
for i in "${!array[@]}"; docheck_url "${array[$i]}"sleep 1
done

}

main "$@"

返回列表