56 lines
1.6 KiB
Django/Jinja
56 lines
1.6 KiB
Django/Jinja
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# === CertCenter 一键部署脚本 ===
|
|
# 域名: {{ domain }}
|
|
# 服务器: {{ server_name }}
|
|
# 生成时间: 由 CertCenter 管理后台生成
|
|
|
|
DOMAIN="{{ domain }}"
|
|
DEPLOY_SCRIPT="/opt/deploy-${DOMAIN//\*/}.sh"
|
|
DOWNLOAD_URL="{{ download_url }}"
|
|
AUTH_HEADER="Authorization: Bearer {{ admin_token }}"
|
|
LOG_FILE="/var/log/cert-deploy.log"
|
|
|
|
echo "=== CertCenter 证书自动部署安装 ==="
|
|
echo "域名: ${DOMAIN}"
|
|
echo ""
|
|
|
|
# 1. 下载部署脚本
|
|
echo "[1/4] 下载部署脚本..."
|
|
curl -fsSLk -H "${AUTH_HEADER}" "${DOWNLOAD_URL}" -o "${DEPLOY_SCRIPT}"
|
|
chmod +x "${DEPLOY_SCRIPT}"
|
|
echo " 已保存到: ${DEPLOY_SCRIPT}"
|
|
|
|
# 2. 首次执行
|
|
echo "[2/4] 首次执行部署脚本..."
|
|
if "${DEPLOY_SCRIPT}"; then
|
|
echo " 首次部署成功"
|
|
else
|
|
echo " ⚠ 首次执行返回非零(可能是证书尚未申请),不影响定时任务设置"
|
|
fi
|
|
|
|
# 3. 写入定时任务
|
|
echo "[3/4] 配置定时任务(每小时执行一次)..."
|
|
CRON_LINE="0 * * * * ${DEPLOY_SCRIPT} >> ${LOG_FILE} 2>&1"
|
|
EXISTING=$(crontab -l 2>/dev/null || true)
|
|
FILTERED=$(echo "${EXISTING}" | grep -v "${DEPLOY_SCRIPT}" || true)
|
|
echo "${FILTERED}
|
|
${CRON_LINE}" | crontab -
|
|
echo " 已添加: ${CRON_LINE}"
|
|
|
|
# 4. 验证
|
|
echo "[4/4] 验证定时任务..."
|
|
if crontab -l 2>/dev/null | grep -q "${DEPLOY_SCRIPT}"; then
|
|
echo " ✓ 定时任务已生效"
|
|
else
|
|
echo " ✗ 定时任务设置失败,请手动添加"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== 安装完成 ==="
|
|
echo "日志文件: ${LOG_FILE}"
|
|
echo "查看日志: tail -f ${LOG_FILE}"
|
|
echo "手动执行: ${DEPLOY_SCRIPT}"
|
|
echo "查看任务: crontab -l"
|