#!/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; doecho -n " ."sleep 1doneechoaction "Curl_check is start!!!!!!" /bin/true }# 使用 curl 检测 URL 的 HTTP 状态和实际请求的跳转目标 check_url() {local url="$1"# -s 静默 -S 失败时显示错误 -L 跟随跳转 -o /dev/null 抑制输出# -w 输出:HTTP 状态码 和 最终跳转的 URL(如果有)local resultresult=$(curl -s -S -L -o /dev/null -w "%{http_code} %{url_effective}\n" "$url")local codecode=$(echo "$result" | awk '{print $1}')local final_urlfinal_url=$(echo "$result" | awk '{print substr($0, index($0,$2))}')# if [ "$code" = "200" ]; thenif [[ $code =~ ^2[0-9][0-9]$ ]]; thenaction "$url ok (200) -> $final_url" /bin/true# elif [ "$code" = "301" ] || [ "$code" = "302" ]; thenelif [[ $code =~ ^3[0-9][0-9]$ ]]; thenaction "$url redirects ($code) -> $final_url" /bin/trueelseaction "$url error (code $code) -> $final_url" /bin/falsefi }main() {wait_for_start# 遍历数组,逐个检查for i in "${!array[@]}"; docheck_url "${array[$i]}"sleep 1done }main "$@"