本升级脚本调用的是1panel自身的更新API,安全升级有保障
- 在1panel面板中添加计划任务,建议为每日的凌晨。
- 任务类型选择
Shell 脚本
。 - 填入如下脚本,在对应位置填入你的1panel登录用户名和密码。
USERNAME="" # 请修改为你的1panel用户名
PASSWORD="" # 请修改为你的1panel密码
# 请勿修改以下内容
if [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
echo "请修改脚本中的USERNAME和PASSWORD变量"
exit 1
fi
BASE_URL=$(1pctl user-info | grep "面板地址:" | awk '{print $2}' | sed 's:/$::')
COOKIE_FILE=$(mktemp)
LOGIN_RESPONSE=$(curl -k -s --location --request POST "$BASE_URL/api/v1/auth/login" \
--data-raw '{
"authMethod": "session",
"captcha": "",
"captchaID": "",
"ignoreCaptcha": true,
"language": "zh",
"name": "'"$USERNAME"'",
"password": "'"$PASSWORD"'"
}' --cookie-jar $COOKIE_FILE)
CODE=$(echo $LOGIN_RESPONSE | grep -o '"code":[0-9]*' | awk -F':' '{print $2}')
UPGRADE_RESPONSE=$(curl -k -s --request GET "$BASE_URL/api/v1/settings/upgrade" --cookie $COOKIE_FILE)
CODE=$(echo $UPGRADE_RESPONSE | grep -o '"code":[0-9]*' | awk -F':' '{print $2}')
DATA=$(echo $UPGRADE_RESPONSE | grep -o '"data":[^,}]*' | awk -F':' '{print $2}')
LATEST_VERSION=$(echo $UPGRADE_RESPONSE | grep -o '"latestVersion":"[^"]*' | sed 's/"latestVersion":"//')
if [ "$CODE" == "200" ] && [ "$DATA" == "null" ]; then
echo "无更新可用"
else
echo "有更新可用,最新版本号:$LATEST_VERSION,正在更新..."
UPDATE_RESPONSE=$(curl -k -s --location --request POST "$BASE_URL/api/v1/settings/upgrade" \
--data-raw '{
"version": "'"$LATEST_VERSION"'"
}' --cookie $COOKIE_FILE)
UPDATE_CODE=$(echo $UPDATE_RESPONSE | grep -o '"code":[0-9]*' | awk -F':' '{print $2}')
if [ "$UPDATE_CODE" == "200" ]; then
echo "升级成功"
else
echo "升级失败"
fi
fi
rm $COOKIE_FILE -f
- 效果