添加1panel同步SSL脚本

This commit is contained in:
Akatsuki-Misaki 2025-01-24 20:26:43 +08:00
parent a2a586063e
commit 779350df46
2 changed files with 76 additions and 0 deletions

3
SHELL/README.md Normal file
View File

@ -0,0 +1,3 @@
# 一个同步1panel面板SSL的脚本
记得修改SSLID

73
SHELL/linux_1panel.sh Normal file
View File

@ -0,0 +1,73 @@
#!/bin/bash
# 定义用户名和密码
USERNAME="****"
PASSWORD="****"
# 安全入口 EntranceCodeBase64
ENTRANCE_CODE="******"
# 1Panel API 地址
LOGIN_URL="http://*******/api/v1/auth/login"
UPLOAD_URL="http://********/api/v1/websites/ssl/upload"
# 定义证书相关信息
PRIVATE_KEY_PATH="/data2/SSL_SAVE/ovofish/privkey.pem"
CERTIFICATE_PATH="/data2/SSL_SAVE/ovofish/fullchain.pem"
SSL_ID=3
DESCRIPTION="sync from certd:tx4"
# 构建登录请求的 JSON 数据
LOGIN_DATA=$(cat <<EOF
{
"name": "$USERNAME",
"password": "$PASSWORD",
"language":"zh",
"authMethod": "jwt"
}
EOF
)
# 使用 curl 发送登录请求
RESPONSE=$(curl -s -X POST "$LOGIN_URL" \
-H "Content-Type: application/json" \
-H "EntranceCode: $ENTRANCE_CODE" \
-d "$LOGIN_DATA")
# 解析返回的 token
TOKEN=$(echo $RESPONSE | grep -Po '(?<="token":")[^"]*')
# 检查是否登录成功
if [ -n "$TOKEN" ]; then
echo "登录成功token: $TOKEN"
# 读取私钥和证书内容
PRIVATE_KEY_CONTENT=$(cat "$PRIVATE_KEY_PATH" | awk '{printf "%s\\n", $0}' | sed 's/\\n$//')
CERTIFICATE_CONTENT=$(cat "$CERTIFICATE_PATH" | awk '{printf "%s\\n", $0}' | sed 's/\\n$//')
printf "私钥内容: $PRIVATE_KEY_CONTENT"
printf "证书内容: $CERTIFICATE_CONTENT"
# 构建上传证书的请求数据
UPLOAD_DATA=$(cat <<EOF
{
"privateKey": "$PRIVATE_KEY_CONTENT",
"certificate": "$CERTIFICATE_CONTENT",
"privateKeyPath": "",
"certificatePath": "",
"type": "paste",
"sslID": $SSL_ID,
"description": "$DESCRIPTION"
}
EOF
)
# 发送证书上传请求
UPLOAD_RESPONSE=$(curl -s -X POST "$UPLOAD_URL" \
-H "PanelAuthorization: $TOKEN" \
-H "Content-Type: application/json" \
-d "$UPLOAD_DATA")
# 输出上传结果
echo "$UPLOAD_DATA"
echo "证书上传响应: $UPLOAD_RESPONSE"
else
echo "登录失败,请检查用户名或密码"
echo "失败响应: $RESPONSE"
fi