This commit is contained in:
2026-07-19 01:15:04 +08:00
parent 700db4efb9
commit c143ea1c48
5 changed files with 115 additions and 7 deletions
+58
View File
@@ -0,0 +1,58 @@
$ErrorActionPreference = "Stop"
# === CertCenter 一键部署脚本 ===
# 域名: {{ domain }}
# 服务器: {{ server_name }}
# 生成时间: 由 CertCenter 管理后台生成
$Domain = "{{ domain }}"
$DeployScript = "C:\cert\deploy-$($Domain -replace '[*\.]','_').ps1"
$DownloadUrl = "{{ download_url }}"
$AdminToken = "{{ admin_token }}"
$LogFile = "C:\cert\cert-deploy.log"
Write-Host "=== CertCenter 证书自动部署安装 ===" -ForegroundColor Cyan
Write-Host "域名: $Domain"
Write-Host ""
# 跳过 TLS 证书验证
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
# 1. 下载部署脚本
Write-Host "[1/4] 下载部署脚本..." -ForegroundColor Yellow
New-Item -ItemType Directory -Force -Path "C:\cert" | Out-Null
Invoke-WebRequest -Uri $DownloadUrl -Headers @{Authorization="Bearer $AdminToken"} -OutFile $DeployScript -UseBasicParsing -SkipCertificateCheck
Write-Host " 已保存到: $DeployScript"
# 2. 首次执行
Write-Host "[2/4] 首次执行部署脚本..." -ForegroundColor Yellow
try {
& powershell -ExecutionPolicy Bypass -File $DeployScript
Write-Host " 首次部署成功" -ForegroundColor Green
} catch {
Write-Host " ⚠ 首次执行异常(可能是证书尚未申请),不影响计划任务设置" -ForegroundColor DarkYellow
}
# 3. 写入计划任务
Write-Host "[3/4] 配置计划任务(每小时执行一次)..." -ForegroundColor Yellow
$TaskName = "CertDeploy-$($Domain -replace '[*\.]','_')"
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-ExecutionPolicy Bypass -File `"$DeployScript`""
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Hours 1)
Register-ScheduledTask -TaskName $TaskName -Action $Action -Trigger $Trigger -Force | Out-Null
Write-Host " 已创建计划任务: $TaskName"
# 4. 验证
Write-Host "[4/4] 验证计划任务..." -ForegroundColor Yellow
$task = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
if ($task) {
Write-Host " ✓ 计划任务已生效 (状态: $($task.State))" -ForegroundColor Green
} else {
Write-Host " ✗ 计划任务设置失败,请手动创建" -ForegroundColor Red
}
Write-Host ""
Write-Host "=== 安装完成 ===" -ForegroundColor Cyan
Write-Host "日志文件: $LogFile"
Write-Host "查看日志: Get-Content $LogFile -Tail 50"
Write-Host "手动执行: powershell -ExecutionPolicy Bypass -File `"$DeployScript`""
Write-Host "查看任务: Get-ScheduledTask -TaskName '$TaskName'"
+52
View File
@@ -0,0 +1,52 @@
#!/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"
(crontab -l 2>/dev/null | grep -v "${DEPLOY_SCRIPT}"; echo "${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"