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]$ ]]; 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

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

main "$@"

 

posted @ 2025-09-19 09:06  hopeccie  阅读(6)  评论(0)    收藏  举报