This commit is contained in:
张威33321
2026-09-08 20:36:17 +08:00
parent 58d65188a1
commit fb87be680d
19 changed files with 398 additions and 212 deletions

34
certbot/check-cert.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env bash
#
# 查看证书状态;任一证书剩余有效期低于阈值时以非 0 退出,便于接入告警。
# 证书过期是静默事故,光有续签日志不够,必须有一个独立的检查点。
#
set -euo pipefail
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin${PATH:+:$PATH}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
WARN_DAYS="${WARN_DAYS:-20}"
cd "$SCRIPT_DIR"
if ! out=$(docker compose run --rm certbot certificates 2>&1); then
echo "$out"
echo "获取证书信息失败" >&2
exit 1
fi
echo "$out"
# certbot 输出形如Expiry Date: 2026-12-07 02:41:23+00:00 (VALID: 89 days)
min="$(echo "$out" | grep -o 'VALID: [0-9]*' | awk '{print $2}' | sort -n | head -1 || true)"
if [ -z "$min" ]; then
echo "未能解析证书有效期" >&2
exit 1
fi
if [ "$min" -lt "$WARN_DAYS" ]; then
echo "警告:证书最少剩余 $min 天,低于阈值 $WARN_DAYS" >&2
exit 1
fi
echo "证书状态正常,最少剩余 $min"