網站 SSL 憑證剩餘日期檢查

 使用 Linux Shell Script 檢查 網站 SSL 憑證剩餘日期

先將要檢查的網域存到 https_list

----

example.com
google.com
yahoo.com

----

建立 ssl_check.sh

---

#!/bin/bash
echo -e "\033[1;36m========================================\033[0m"
echo -e "\033[1;36m    網站 SSL 憑證剩餘日期檢查    \033[0m"
echo -e "\033[1;36m========================================\033[0m"

# 顯示顏色範圍說明
echo -e "\033[1;31m    紅色\033[0m: 少於 \033[1;31m30 \033[0m天"
echo -e "\033[1;33m    黃色\033[0m: 少於 \033[1;33m60 \033[0m天"
echo -e "\033[1;32m    綠色\033[0m: 超過 \033[1;32m60 \033[0m天"
echo -e "\033[1;36m========================================\033[0m"

printf "\033[1;36m|   \033[0m\033[1;34m%-30s\033[0m | \033[1;34m%-15s\033[0m | \033[1;34m%-2s\033[0m|\n" "網域名稱" "IP 地址" " 天 數 "
echo -e "\033[1;36m========================================\033[0m"


# 讀取 https_list 內的域名

while read -r host; do
    # 解析域名的 IP 地址
    ip_address=$(dig +short "$host" | head -n 1)

    # 如果無法解析出 IP 地址,顯示錯誤
    if [[ -z "$ip_address" ]]; then
        ip_address="無法解析"
    fi

    # 獲取 SSL 憑證過期時間
    cert_info=$(echo | openssl s_client -servername "$host" -connect "$host:443" 2>/dev/null | openssl x509 -noout -dates)

    # 如果無法獲取證書,顯示錯誤
    if [[ -z "$cert_info" ]]; then
        printf "| \033[1;34m%-28s\033[0m | \033[1;31m%-15s\033[0m | \033[1;31m   錯誤 \033[0m |\n" "$host" "$ip_address"
        continue
    fi

   # 解析 SSL 憑證的到期時間
    end_date=$(echo "$cert_info" | awk -F= '/notAfter/ {print $2}')

    # 轉換為時間戳記
    end_timestamp=$(date -d "$end_date" +%s)
    current_timestamp=$(date +%s)

    # 計算剩餘天數
    days=$(( (end_timestamp - current_timestamp) / 86400 ))

    # 設定顏色(紅黃綠)
    if [ "$days" -lt 30 ]; then
        color="\033[1;31m"  # 紅色(少於 30 天)
    elif [ "$days" -lt 60 ]; then
        color="\033[1;33m"  # 黃色(少於 60 天)
    else
        color="\033[1;32m"  # 綠色(超過 60 天)
    fi

    # 顯示結果並確保顏色正常顯示,網域名稱固定寬度為 28,IP 地址固定寬度為 15,剩餘天數固定寬度為 6

    printf "| \033[1;34m%-28s\033[0m | \033[1;34m%-15s\033[0m | $color%2d\033[0m 天 |\n" "$host" "$ip_address" "$days"

done < https_list

 #結束表格
echo -e "\033[1;36m========================================\033[0m"

---


留言

這個網誌中的熱門文章

Routeros中TX與RX的定義

Windows 7 輸入法不見

.mo 語言檔中文化