feat: support direct pipe execution via curl/wget and auto-bootstrap
This commit is contained in:
@@ -35,17 +35,25 @@ sb-core/
|
|||||||
|
|
||||||
## 🚀 快速使用
|
## 🚀 快速使用
|
||||||
|
|
||||||
### 1. 部署与运行
|
### 1. 一键脚本命令(推荐)
|
||||||
|
|
||||||
在 Linux VPS(Ubuntu / Debian / CentOS / Rocky 等)以 `root` 权限执行:
|
在 Linux VPS(Ubuntu / Debian / CentOS / Rocky / Alpine 等)以 `root` 权限直接执行以下任一命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash <(curl -Ls https://git.draws.qzz.io/jocay/singbox-script/raw/branch/main/sb.sh)
|
||||||
|
```
|
||||||
|
或者:
|
||||||
|
```bash
|
||||||
|
bash <(wget -qO- https://git.draws.qzz.io/jocay/singbox-script/raw/branch/main/sb.sh)
|
||||||
|
```
|
||||||
|
|
||||||
|
**或者通过 Git Clone 手动部署:**
|
||||||
```bash
|
```bash
|
||||||
git clone https://git.draws.qzz.io/jocay/singbox-script.git
|
git clone https://git.draws.qzz.io/jocay/singbox-script.git
|
||||||
cd singbox-script
|
cd singbox-script
|
||||||
chmod +x sb.sh lib/*.sh
|
chmod +x sb.sh lib/*.sh
|
||||||
./sb.sh
|
./sb.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
首次运行后会自动建立全局快捷指令,之后在系统任意目录输入 `sb` 即可调出菜单。
|
首次运行后会自动建立全局快捷指令,之后在系统任意目录输入 `sb` 即可调出菜单。
|
||||||
|
|
||||||
### 2. 交互式菜单功能
|
### 2. 交互式菜单功能
|
||||||
|
|||||||
@@ -8,6 +8,64 @@
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
BOOTSTRAP_DIR="/usr/local/share/singbox-script"
|
||||||
|
TAR_URL="https://git.draws.qzz.io/jocay/singbox-script/archive/main.tar.gz"
|
||||||
|
GIT_URL="https://git.draws.qzz.io/jocay/singbox-script.git"
|
||||||
|
|
||||||
|
# 检测是否通过网络管道 (curl | bash 或 wget | bash) 远程单行执行
|
||||||
|
if [[ ! -d "${SCRIPT_DIR}/lib" ]]; then
|
||||||
|
if [[ $EUID -ne 0 ]]; then
|
||||||
|
echo -e "\033[31m[ERROR]\033[0m 本脚本需要 root 权限,请使用 sudo 或切换至 root 用户执行!" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\033[36m[INFO]\033[0m 检测到通过网络管道一键运行,正在自动化拉取完整组件至 ${BOOTSTRAP_DIR}..."
|
||||||
|
|
||||||
|
# 确保基础下载与解压依赖
|
||||||
|
if ! command -v tar >/dev/null 2>&1 || (! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1); then
|
||||||
|
if command -v apt-get >/dev/null 2>&1; then
|
||||||
|
apt-get update -y >/dev/null 2>&1 && apt-get install -y curl tar ca-certificates >/dev/null 2>&1
|
||||||
|
elif command -v dnf >/dev/null 2>&1; then
|
||||||
|
dnf install -y curl tar ca-certificates >/dev/null 2>&1
|
||||||
|
elif command -v yum >/dev/null 2>&1; then
|
||||||
|
yum install -y curl tar ca-certificates >/dev/null 2>&1
|
||||||
|
elif command -v apk >/dev/null 2>&1; then
|
||||||
|
apk update >/dev/null 2>&1 && apk add --no-cache curl tar ca-certificates >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "${BOOTSTRAP_DIR}"
|
||||||
|
mkdir -p "${BOOTSTRAP_DIR}"
|
||||||
|
temp_archive="/tmp/singbox-script-$$.tar.gz"
|
||||||
|
|
||||||
|
download_success=false
|
||||||
|
if command -v curl >/dev/null 2>&1; then
|
||||||
|
if curl -sSL --fail --connect-timeout 10 -o "$temp_archive" "$TAR_URL"; then
|
||||||
|
download_success=true
|
||||||
|
fi
|
||||||
|
elif command -v wget >/dev/null 2>&1; then
|
||||||
|
if wget -qO "$temp_archive" "$TAR_URL"; then
|
||||||
|
download_success=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$download_success" == "true" ]]; then
|
||||||
|
tar -xzf "$temp_archive" -C "${BOOTSTRAP_DIR}" --strip-components=1 2>/dev/null || tar -xzf "$temp_archive" -C "${BOOTSTRAP_DIR}"
|
||||||
|
rm -f "$temp_archive"
|
||||||
|
elif command -v git >/dev/null 2>&1; then
|
||||||
|
rm -rf "${BOOTSTRAP_DIR}"
|
||||||
|
git clone --depth=1 "$GIT_URL" "${BOOTSTRAP_DIR}" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
echo -e "\033[31m[ERROR]\033[0m 下载失败,请检查网络或确认仓库地址有效: ${TAR_URL}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod +x "${BOOTSTRAP_DIR}/sb.sh" "${BOOTSTRAP_DIR}/lib/"*.sh 2>/dev/null || true
|
||||||
|
ln -sf "${BOOTSTRAP_DIR}/sb.sh" /usr/local/bin/sb
|
||||||
|
chmod +x /usr/local/bin/sb
|
||||||
|
|
||||||
|
exec bash "${BOOTSTRAP_DIR}/sb.sh" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
# 加载各核心子模块
|
# 加载各核心子模块
|
||||||
source "${SCRIPT_DIR}/lib/env.sh"
|
source "${SCRIPT_DIR}/lib/env.sh"
|
||||||
@@ -217,6 +275,7 @@ do_uninstall() {
|
|||||||
|
|
||||||
# 仅清理程序自身目录,杜绝误伤
|
# 仅清理程序自身目录,杜绝误伤
|
||||||
rm -rf "${INSTALL_DIR}"
|
rm -rf "${INSTALL_DIR}"
|
||||||
|
rm -rf "${BOOTSTRAP_DIR}"
|
||||||
rm -f "${BIN_PATH}" "${SCRIPT_LINK}"
|
rm -f "${BIN_PATH}" "${SCRIPT_LINK}"
|
||||||
|
|
||||||
log_success "Sing-box 核心服务已完全且干净地卸载!"
|
log_success "Sing-box 核心服务已完全且干净地卸载!"
|
||||||
|
|||||||
Reference in New Issue
Block a user