url_check_script.sh
· 1.6 KiB · Bash
Raw
#!/usr/bin/env bash
# ===== 顏色設定 =====
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
CYAN="\033[36m"
RESET="\033[0m"
# ===== 專案 Logo(ASCII Art)=====
show_logo() {
echo -e "${CYAN}"
echo " ____ _ "
echo " | _ \ ___ ___ | | ___ ___ "
echo " | |_) / _ \ / _ \| |/ _ \/ __|"
echo " | __/ (_) | (_) | | __/\__ \\"
echo " |_| \___/ \___/|_|\___||___/"
echo -e "${RESET}"
}
# ===== 權限檢查與自動 sudo =====
require_root() {
if [[ $EUID -ne 0 ]]; then
echo -e "${YELLOW}需要 root 權限,將自動以 sudo 重新執行...${RESET}"
if command -v sudo >/dev/null 2>&1; then
exec sudo "$0" "$@"
else
echo -e "${RED}找不到 sudo,請手動以 root 執行。${RESET}"
exit 1
fi
fi
}
# ===== 用 curl --head 測試檔案網址 =====
check_url_exists() {
local url="$1"
if curl --head --silent --fail "$url" >/dev/null; then
echo -e "${GREEN}網址存在:${url}${RESET}"
return 0
else
echo -e "${YELLOW}找不到檔案:${url}${RESET}"
return 1
fi
}
# ===== 主程式入口 main =====
main() {
show_logo
require_root "$@"
# 範例網址測試
FILE_URL1="https://example.com/file.txt"
FILE_URL2="https://example.com/file_backup.txt"
if ! check_url_exists "$FILE_URL1"; then
echo -e "${CYAN}嘗試第二個網址...${RESET}"
if ! check_url_exists "$FILE_URL2"; then
echo -e "${RED}兩個網址都無法存取,請檢查連線或檔案名稱。${RESET}"
exit 2
fi
fi
echo -e "${GREEN}腳本執行完成!${RESET}"
}
# ===== 執行主程式 =====
main "$@"
| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | # ===== 顏色設定 ===== |
| 4 | RED="\033[31m" |
| 5 | GREEN="\033[32m" |
| 6 | YELLOW="\033[33m" |
| 7 | CYAN="\033[36m" |
| 8 | RESET="\033[0m" |
| 9 | |
| 10 | # ===== 專案 Logo(ASCII Art)===== |
| 11 | show_logo() { |
| 12 | echo -e "${CYAN}" |
| 13 | echo " ____ _ " |
| 14 | echo " | _ \ ___ ___ | | ___ ___ " |
| 15 | echo " | |_) / _ \ / _ \| |/ _ \/ __|" |
| 16 | echo " | __/ (_) | (_) | | __/\__ \\" |
| 17 | echo " |_| \___/ \___/|_|\___||___/" |
| 18 | echo -e "${RESET}" |
| 19 | } |
| 20 | |
| 21 | # ===== 權限檢查與自動 sudo ===== |
| 22 | require_root() { |
| 23 | if [[ $EUID -ne 0 ]]; then |
| 24 | echo -e "${YELLOW}需要 root 權限,將自動以 sudo 重新執行...${RESET}" |
| 25 | if command -v sudo >/dev/null 2>&1; then |
| 26 | exec sudo "$0" "$@" |
| 27 | else |
| 28 | echo -e "${RED}找不到 sudo,請手動以 root 執行。${RESET}" |
| 29 | exit 1 |
| 30 | fi |
| 31 | fi |
| 32 | } |
| 33 | |
| 34 | # ===== 用 curl --head 測試檔案網址 ===== |
| 35 | check_url_exists() { |
| 36 | local url="$1" |
| 37 | if curl --head --silent --fail "$url" >/dev/null; then |
| 38 | echo -e "${GREEN}網址存在:${url}${RESET}" |
| 39 | return 0 |
| 40 | else |
| 41 | echo -e "${YELLOW}找不到檔案:${url}${RESET}" |
| 42 | return 1 |
| 43 | fi |
| 44 | } |
| 45 | |
| 46 | # ===== 主程式入口 main ===== |
| 47 | main() { |
| 48 | show_logo |
| 49 | |
| 50 | require_root "$@" |
| 51 | |
| 52 | # 範例網址測試 |
| 53 | FILE_URL1="https://example.com/file.txt" |
| 54 | FILE_URL2="https://example.com/file_backup.txt" |
| 55 | |
| 56 | if ! check_url_exists "$FILE_URL1"; then |
| 57 | echo -e "${CYAN}嘗試第二個網址...${RESET}" |
| 58 | if ! check_url_exists "$FILE_URL2"; then |
| 59 | echo -e "${RED}兩個網址都無法存取,請檢查連線或檔案名稱。${RESET}" |
| 60 | exit 2 |
| 61 | fi |
| 62 | fi |
| 63 | |
| 64 | echo -e "${GREEN}腳本執行完成!${RESET}" |
| 65 | } |
| 66 | |
| 67 | # ===== 執行主程式 ===== |
| 68 | main "$@" |
| 69 |