網站 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"
---
留言
張貼留言