chore: 移除内置脚本自更新流程

- 删除自更新菜单、版本比较及脚本替换逻辑
- 连续重排剩余主菜单的编号
- 将项目资源下载源重命名为 PROJECT_RAW_URL
- 同步更新文档以反映精简后的功能
This commit is contained in:
eddy
2026-08-01 23:23:07 +08:00
parent 2b153e2ec7
commit 30456165c4
3 changed files with 17 additions and 115 deletions
+3 -3
View File
@@ -27,14 +27,14 @@ curl -sS -O https://gitea.tohub.top/Share/kejilion/raw/branch/main/kejilion.sh &
*** ***
### 下载源配置 ### 下载源配置
脚本内通过 GitHub Raw 下载的资源默认走官方地址,脚本自身更新走本仓库 `main` 分支均可用环境变量覆盖。部分测试工具使用其项目提供的独立域名,不受 `GITHUB_RAW_URL` 控制: 脚本内通过 GitHub Raw 下载的第三方资源默认走官方地址,项目附属资源默认从本仓库 `main` 分支下载,两者均可用环境变量覆盖。部分测试工具使用其项目提供的独立域名,不受 `GITHUB_RAW_URL` 控制:
```bash ```bash
# 自定义第三方脚本下载源(例如自建 GitHub 反代) # 自定义第三方脚本下载源(例如自建 GitHub 反代)
GITHUB_RAW_URL="https://your-mirror.example.com" ./kejilion.sh GITHUB_RAW_URL="https://your-mirror.example.com" ./kejilion.sh
# 自定义脚本自身的更新 # 自定义本项目附属资源下载
UPDATE_RAW_URL="https://gitea.tohub.top/Share/kejilion/raw/branch/main" ./kejilion.sh PROJECT_RAW_URL="https://gitea.tohub.top/Share/kejilion/raw/branch/main" ./kejilion.sh
``` ```
+4 -18
View File
@@ -44,7 +44,7 @@
- `./kejilion.sh clean` - `./kejilion.sh clean`
- `./kejilion.sh 清理` - `./kejilion.sh 清理`
### 5. BBR 管理 ### 4. BBR 管理
提供 BBR 管理入口,但实际下载并执行第三方 `Linux-NetSpeed/tcpx.sh` 提供 BBR 管理入口,但实际下载并执行第三方 `Linux-NetSpeed/tcpx.sh`
@@ -52,7 +52,7 @@
另外,“系统工具”中还有一套本地实现的 **BBRv3/XanMod 内核管理** 另外,“系统工具”中还有一套本地实现的 **BBRv3/XanMod 内核管理**
### 8. 测试脚本合集 ### 5. 测试脚本合集
#### IP 与解锁检测 #### IP 与解锁检测
@@ -267,21 +267,7 @@
--- ---
## 三、脚本自身功能 ## 三、命令行快捷功能
### 脚本更新
支持:
- 获取远程版本号和更新日志
- 比较本地与远程版本
- 拒绝自动降级
- 下载新版本
- 执行 Bash 语法检查
- 校验下载版本
- 原子替换当前脚本
- 更新 `/usr/local/bin/k`
- 自动启动新版本
### 软件包快捷命令 ### 软件包快捷命令
@@ -343,6 +329,6 @@ XanMod 软件源的 PGP 公钥。主脚本目前同样下载远程版本,没
2. **用户、Swap、DNS、时区、更新源等系统管理** 2. **用户、Swap、DNS、时区、更新源等系统管理**
3. **BBR、网络线路与性能测试** 3. **BBR、网络线路与性能测试**
4. **Fail2Ban SSH 防护和流量限额关机** 4. **Fail2Ban SSH 防护和流量限额关机**
5. **脚本自更新和命令行快捷操作** 5. **软件包与系统维护命令行快捷操作**
其中系统管理、账户、Swap、更新源、Crontab、hosts、BBRv3 和限流功能有较完整的本地实现;普通 BBR 菜单和多数测试功能主要依赖远程脚本。 其中系统管理、账户、Swap、更新源、Crontab、hosts、BBRv3 和限流功能有较完整的本地实现;普通 BBR 菜单和多数测试功能主要依赖远程脚本。
+10 -94
View File
@@ -13,9 +13,9 @@ hui='\e[37m'
GITHUB_RAW_URL="${GITHUB_RAW_URL:-https://raw.githubusercontent.com}" GITHUB_RAW_URL="${GITHUB_RAW_URL:-https://raw.githubusercontent.com}"
GITHUB_RAW_URL="${GITHUB_RAW_URL%/}" GITHUB_RAW_URL="${GITHUB_RAW_URL%/}"
# 本脚本自身的更新 # 本项目附属资源的下载
UPDATE_RAW_URL="${UPDATE_RAW_URL:-https://gitea.tohub.top/Share/kejilion/raw/branch/main}" PROJECT_RAW_URL="${PROJECT_RAW_URL:-https://gitea.tohub.top/Share/kejilion/raw/branch/main}"
UPDATE_RAW_URL="${UPDATE_RAW_URL%/}" PROJECT_RAW_URL="${PROJECT_RAW_URL%/}"
XANMOD_SOURCE_FILE=/etc/apt/sources.list.d/kejilion-xanmod.list XANMOD_SOURCE_FILE=/etc/apt/sources.list.d/kejilion-xanmod.list
@@ -215,24 +215,6 @@ update_limit_cron() {
return 1 return 1
} }
# 版本号比较:$1 严格大于 $2 时返回 0,用于避免自更新把脚本降级
version_gt() {
[ "$1" = "$2" ] && return 1
local IFS=. i x y
local a=($1) b=($2)
for ((i = 0; i < ${#a[@]} || i < ${#b[@]}; i++)); do
x=${a[i]:-0}; y=${b[i]:-0}
x=${x//[!0-9]/}; y=${y//[!0-9]/}
x=${x:-0}; y=${y:-0}
[ "$x" -gt "$y" ] && return 0
[ "$x" -lt "$y" ] && return 1
done
return 1
}
ip_address() { ip_address() {
ipv4_address=$(curl -s ipv4.ip.sb) ipv4_address=$(curl -s ipv4.ip.sb)
ipv6_address=$(curl -s --max-time 1 ipv6.ip.sb) ipv6_address=$(curl -s --max-time 1 ipv6.ip.sb)
@@ -868,11 +850,9 @@ echo "------------------------"
echo "1. 系统信息查询" echo "1. 系统信息查询"
echo "2. 系统更新" echo "2. 系统更新"
echo "3. 系统清理" echo "3. 系统清理"
echo "5. BBR管理 ▶" echo "4. BBR管理 ▶"
echo "8. 测试脚本合集 ▶ " echo "5. 测试脚本合集 ▶ "
echo "13. 系统工具 ▶ " echo "6. 系统工具 ▶ "
echo "------------------------"
echo "00. 脚本更新"
echo "------------------------" echo "------------------------"
echo "0. 退出脚本" echo "0. 退出脚本"
echo "------------------------" echo "------------------------"
@@ -1000,7 +980,7 @@ case $choice in
linux_clean linux_clean
;; ;;
5) 4)
clear clear
tcpx_dir=$(mktemp -d) || { tcpx_dir=$(mktemp -d) || {
err_msg "无法创建临时目录。" err_msg "无法创建临时目录。"
@@ -1014,7 +994,7 @@ case $choice in
rm -rf "$tcpx_dir" rm -rf "$tcpx_dir"
;; ;;
8) 5)
while true; do while true; do
clear clear
echo "▶ 测试脚本合集" echo "▶ 测试脚本合集"
@@ -1158,7 +1138,7 @@ case $choice in
done done
;; ;;
13) 6)
while true; do while true; do
clear clear
echo "▶ 系统工具" echo "▶ 系统工具"
@@ -2232,7 +2212,7 @@ case $choice in
fi fi
limit_script_existed=1 limit_script_existed=1
fi fi
if download_file "${UPDATE_RAW_URL}/Limiting_Shut_down.sh" "$tmp_limit_script" && if download_file "${PROJECT_RAW_URL}/Limiting_Shut_down.sh" "$tmp_limit_script" &&
sed -i "s/^threshold_gb=.*/threshold_gb=${threshold_gb}/" "$tmp_limit_script" && sed -i "s/^threshold_gb=.*/threshold_gb=${threshold_gb}/" "$tmp_limit_script" &&
grep -q "^threshold_gb=${threshold_gb}$" "$tmp_limit_script" && grep -q "^threshold_gb=${threshold_gb}$" "$tmp_limit_script" &&
bash -n "$tmp_limit_script" && bash -n "$tmp_limit_script" &&
@@ -2294,70 +2274,6 @@ case $choice in
done done
;; ;;
00)
clear
echo "更新日志"
echo "------------------------"
changelog=$(curl -fsSL --max-time 20 "${UPDATE_RAW_URL}/kejilion_sh_log.txt")
if [ -n "$changelog" ]; then
echo "全部日志: ${UPDATE_RAW_URL}/kejilion_sh_log.txt"
echo "------------------------"
echo "$changelog" | tail -n 35
else
echo "(当前更新源未提供更新日志)"
fi
echo "------------------------"
sh_v_new=$(curl -fsSL --max-time 20 "${UPDATE_RAW_URL}/kejilion.sh" | grep -o 'sh_v="[0-9.]*"' | head -n 1 | cut -d '"' -f 2)
if [ -z "$sh_v_new" ]; then
err_msg "无法获取远程版本信息,请检查网络或更新源: ${UPDATE_RAW_URL}"
elif [ "$sh_v" = "$sh_v_new" ]; then
echo -e "${lv}你已经是最新版本!${huang}v$sh_v${bai}"
elif ! version_gt "$sh_v_new" "$sh_v"; then
echo -e "${lv}本地版本 ${huang}v$sh_v${lv} 高于更新源版本 ${huang}v$sh_v_new${lv},已跳过更新。${bai}"
else
echo "发现新版本!"
echo -e "当前版本 v$sh_v 最新版本 ${huang}v$sh_v_new${bai}"
echo "------------------------"
read -p "确定更新脚本吗?(Y/N): " choice
case "$choice" in
[Yy])
clear
# 在脚本所在目录下载并原子替换,避免更新失败时截断当前脚本
script_dir=$(dirname "$SCRIPT_PATH")
tmp_sh=$(mktemp "${script_dir}/.kejilion.sh.XXXXXX") || {
err_msg "创建更新临时文件失败。"
echo "按任意键继续..."
read -n 1 -s -r -p ""
continue
}
if download_file "${UPDATE_RAW_URL}/kejilion.sh" "$tmp_sh" &&
bash -n "$tmp_sh" &&
downloaded_version=$(grep -m1 -oE '^sh_v="[0-9]+([.][0-9]+)*"$' "$tmp_sh" | cut -d '"' -f 2) &&
[ "$downloaded_version" = "$sh_v_new" ] &&
version_gt "$downloaded_version" "$sh_v" &&
chmod +x "$tmp_sh" &&
mv -f "$tmp_sh" "$SCRIPT_PATH"; then
cp "$SCRIPT_PATH" /usr/local/bin/k > /dev/null 2>&1
echo -e "${lv}脚本已更新到最新版本!${huang}v$sh_v_new${bai}"
break_end
exec bash "$SCRIPT_PATH"
else
rm -f "$tmp_sh"
err_msg "更新失败,已保留当前版本。"
fi
;;
[Nn])
echo "已取消"
;;
*)
;;
esac
fi
;;
0) 0)
clear clear
exit exit