diff --git a/install.sh b/install.sh index e8da7a3c..e962ecbb 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash # ========================================================== -# 脚本名称: install.sh (v4.3.0 模块化终极引导入口) -# 核心功能: 权限鉴定、沙盒创建、Ctrl+C 熔断保护、业务流引导 +# 脚本名称: install.sh (动态模块化终极引导入口) +# 核心功能: 权限鉴定、沙盒创建、Ctrl+C 熔断保护、动态版本嗅探 # ========================================================== if [ "$EUID" -ne 0 ]; then @@ -23,9 +23,14 @@ trap 'rm -rf "$SECURE_TMP" 2>/dev/null' EXIT HUP REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main" -echo -e "\n⏳ 正在拉取 IP-Sentinel v4.3.0 安装模块引擎..." +# ---------------------------------------------------------- +# [核心架构升级] 动态嗅探云端真理之源 (SSOT) +# ---------------------------------------------------------- +TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt?t=$(date +%s)" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt?t=$(date +%s)") 2>/dev/null | grep "^AGENT_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]') +TARGET_VERSION=${TARGET_VERSION:-"4.3.1"} + +echo -e "\n⏳ 正在拉取 IP-Sentinel v${TARGET_VERSION} 安装模块引擎..." -# 【核心防线】追加 ?t=$(date +%s) 强行击穿 GitHub CDN 缓存 curl -fsSL --connect-timeout 10 --retry 3 "${REPO_RAW_URL}/install/build_agent.sh?t=$(date +%s)" -o "${SECURE_TMP}/build_agent.sh" if [ ! -s "${SECURE_TMP}/build_agent.sh" ]; then @@ -35,6 +40,7 @@ fi export SECURE_TMP export REPO_RAW_URL +export TARGET_VERSION chmod +x "${SECURE_TMP}/build_agent.sh" bash "${SECURE_TMP}/build_agent.sh" diff --git a/install/env_setup.sh b/install/env_setup.sh index b3cd205f..a25beccd 100755 --- a/install/env_setup.sh +++ b/install/env_setup.sh @@ -1,7 +1,7 @@ #!/bin/bash # ========================================================== # 模块名称: env_setup.sh -# 核心功能: 靶机架构预检、云端版本解析、多分支包管理器依赖补全 +# 核心功能: 靶机架构预检、多分支包管理器依赖补全 # ========================================================== is_systemd() { @@ -35,9 +35,6 @@ version_lt() { test "$(printf '%s\n' "$1" "$2" | sort -V | head -n 1)" = "$1" && test "$1" != "$2" } -# ---------------------------------------------------------- -# [时序 1] 预检系统环境,输出雷达面板 -# ---------------------------------------------------------- do_env_precheck() { echo -e "\n======================================" echo -e "📊 \033[36mIP-Sentinel 靶机环境侦测预检\033[0m" @@ -56,22 +53,14 @@ do_env_precheck() { CONFIG_FILE="${INSTALL_DIR}/config.conf" } -# ---------------------------------------------------------- -# [时序 2] 解析远端版本锚点 -# ---------------------------------------------------------- do_fetch_version() { - # 动态抓取,若失败则提供硬编码保底 - TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt") 2>/dev/null | grep "^AGENT_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]') - TARGET_VERSION=${TARGET_VERSION:-"4.2.3"} + # 已由外壳入口拉取并 export TARGET_VERSION,此处只需保障兜底容错 + TARGET_VERSION=${TARGET_VERSION:-"4.3.1"} } -# ---------------------------------------------------------- -# [时序 3] 唤醒包管理器,补全战地依赖 -# ---------------------------------------------------------- do_install_deps() { echo -e "\n[1/7] 正在探测并安装基础环境依赖 (curl, jq, cron, procps, python3, sqlite3)..." - # [修改点] 将 sqlite3 统一纳入全端基础依赖池 REQUIRED_CMDS=("curl" "jq" "crontab" "pgrep" "python3" "openssl" "sqlite3") MISSING_CMDS=() @@ -86,7 +75,6 @@ do_install_deps() { if command -v apt-get >/dev/null 2>&1; then apt-get update -y >/dev/null 2>&1 - # [修改点] apt-get 阵营追加 sqlite3 apt-get install -y --no-install-recommends curl jq cron procps python3 openssl sqlite3 >/dev/null 2>&1 systemctl enable cron >/dev/null 2>&1 && systemctl start cron >/dev/null 2>&1 @@ -104,20 +92,17 @@ do_install_deps() { $PKG_MGR install -y epel-release >/dev/null 2>&1 || true echo -e "\033[90m (正在拉取核心组件...)\033[0m" - # [修改点] RHEL 阵营追加 sqlite $PKG_MGR install -y $OPT_ARGS curl jq cronie procps-ng python3 openssl sqlite systemctl enable crond >/dev/null 2>&1 && systemctl start crond >/dev/null 2>&1 elif command -v apk >/dev/null 2>&1; then echo "Alpine 探测到系统类型为 Alpine Linux,正在执行轻量级安装..." - # [修改点] Alpine 阵营追加 sqlite apk add --no-cache curl jq cronie procps python3 bash openssl sqlite || apk add --no-cache curl jq procps python3 bash openssl sqlite mkdir -p /var/spool/cron/crontabs rc-update add crond default >/dev/null 2>&1 service crond start >/dev/null 2>&1 elif command -v pacman >/dev/null 2>&1; then - # [修改点] Arch 阵营追加 sqlite pacman -S --needed --noconfirm curl jq cronie procps-ng python openssl sqlite >/dev/null 2>&1 mkdir -p /root/.cache/crontab 2>/dev/null systemctl enable cronie >/dev/null 2>&1 && systemctl start cronie >/dev/null 2>&1 @@ -125,7 +110,6 @@ do_install_deps() { else echo -e "\033[31m❌ 自动安装失败:系统未知的包管理器。\033[0m" echo -e "\033[33m⚠️ 请根据您的操作系统,手动执行以下安装命令后重新运行本脚本:\033[0m" - # [修改点] 手动提示文案追加 sqlite3/sqlite echo -e " Debian/Ubuntu: \033[36mapt-get update && apt-get install -y --no-install-recommends curl jq cron procps python3 openssl sqlite3\033[0m" echo -e " CentOS/RHEL: \033[36myum install -y curl jq cronie procps-ng python3 openssl sqlite\033[0m" echo -e " Alpine Linux: \033[36mapk add --no-cache curl jq cronie procps python3 bash openssl sqlite\033[0m" diff --git a/install/master_setup.sh b/install/master_setup.sh index abaea5bb..8e3211c6 100755 --- a/install/master_setup.sh +++ b/install/master_setup.sh @@ -21,7 +21,7 @@ do_master_env_precheck() { } do_fetch_master_version() { - TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt") 2>/dev/null | grep "^MASTER_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]') + TARGET_VERSION=${TARGET_VERSION:-"4.3.1"} TARGET_VERSION=${TARGET_VERSION:-"4.0.7"} MASTER_DIR="/opt/ip_sentinel_master" diff --git a/master/install_master.sh b/master/install_master.sh index db21cc2f..7d030c31 100755 --- a/master/install_master.sh +++ b/master/install_master.sh @@ -1,7 +1,7 @@ #!/bin/bash # ========================================================== -# 脚本名称: install_master.sh (v4.3.0 终极模块化引导入口) -# 核心功能: 极简引导入口。包含 Ctrl+C 优雅中断,采用物理文件执行规避管道污染 +# 脚本名称: install_master.sh (动态模块化终极引导入口) +# 核心功能: 极简引导入口。包含 Ctrl+C 优雅中断,动态版本嗅探 # ========================================================== cleanup_and_exit() { @@ -22,9 +22,14 @@ fi SECURE_TMP=$(mktemp -d /tmp/ips_master_install.XXXXXX) REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main" -echo -e "\n⏳ 正在拉取 IP-Sentinel Master v4.3.0 安装引擎..." +# ---------------------------------------------------------- +# [核心架构升级] 动态嗅探云端真理之源 (SSOT) +# ---------------------------------------------------------- +TARGET_VERSION=$( (curl -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt?t=$(date +%s)" || curl -4 -fsSL --connect-timeout 5 --retry 2 "${REPO_RAW_URL}/version.txt?t=$(date +%s)") 2>/dev/null | grep "^MASTER_VERSION=" | cut -d'=' -f2 | tr -d '[:space:]') +TARGET_VERSION=${TARGET_VERSION:-"4.3.1"} + +echo -e "\n⏳ 正在拉取 IP-Sentinel Master v${TARGET_VERSION} 安装引擎..." -# 【核心防线】追加 ?t=$(date +%s) 强行击穿 GitHub CDN 缓存 curl -fsSL --connect-timeout 10 --retry 3 "${REPO_RAW_URL}/install/build_master.sh?t=$(date +%s)" -o "${SECURE_TMP}/build_master.sh" if [ ! -s "${SECURE_TMP}/build_master.sh" ]; then @@ -34,6 +39,7 @@ fi export SECURE_TMP export REPO_RAW_URL +export TARGET_VERSION chmod +x "${SECURE_TMP}/build_master.sh" bash "${SECURE_TMP}/build_master.sh"