From 51c23b4cca2bb3821d21a89024131843079cb907 Mon Sep 17 00:00:00 2001 From: nfgj <3496310652@qq.com> Date: Mon, 10 Aug 2026 20:47:39 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.sh | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/main.sh b/main.sh index 6202a0b..256e7b1 100644 --- a/main.sh +++ b/main.sh @@ -21,6 +21,17 @@ log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; exit 1; } +# 从终端读取用户输入(兼容 curl | bash 管道执行) +tty_read() { + local prompt="$1" varname="$2" + if [ -r /dev/tty ]; then + echo -ne "$prompt" > /dev/tty + read -r "$varname" < /dev/tty + else + log_error "无法打开终端 /dev/tty,请确认在交互式终端中运行" + fi +} + # ============================================ # 用户配置变量(按需修改) # ============================================ @@ -70,7 +81,7 @@ uninstall_easytier() { echo " 3. 删除安装目录: $EASYTIER_DIR" echo " 4. 删除下载的 ZIP 文件" echo "" - read -p "确认卸载?此操作不可恢复 [y/N]: " CONFIRM_UNINSTALL + tty_read "确认卸载?此操作不可恢复 [y/N]: " CONFIRM_UNINSTALL if [[ ! "$CONFIRM_UNINSTALL" =~ ^[Yy]$ ]]; then log_info "已取消卸载" exit 0 @@ -118,7 +129,7 @@ echo -e " ${GREEN}1.${NC} 部署为 ${GREEN}服务端${NC}" echo -e " ${YELLOW}2.${NC} 部署为 ${YELLOW}客户端${NC}" echo -e " ${RED}3.${NC} ${RED}卸载 Easytier${NC}" echo "" -read -p "请选择 [1/2/3]: " MODE +tty_read "请选择 [1/2/3]: " MODE case "$MODE" in 3) @@ -127,18 +138,18 @@ case "$MODE" in 1) ROLE="server" # 服务端虚拟 IP - read -p "请输入服务端虚拟 IP [10.126.5.1]: " VIRTUAL_IP + tty_read "请输入服务端虚拟 IP [10.126.5.1]: " VIRTUAL_IP VIRTUAL_IP="${VIRTUAL_IP:-10.126.5.1}" HOSTNAME=$(hostname) ;; 2) ROLE="client" # 客户端需要知道服务端信息 - read -p "请输入服务器公网 IP: " SERVER_PUBLIC_IP + tty_read "请输入服务器公网 IP: " SERVER_PUBLIC_IP if [ -z "$SERVER_PUBLIC_IP" ]; then log_error "服务器公网 IP 不能为空" fi - read -p "请输入服务端虚拟 IP [10.126.5.1]: " SERVER_VIRTUAL_IP + tty_read "请输入服务端虚拟 IP [10.126.5.1]: " SERVER_VIRTUAL_IP SERVER_VIRTUAL_IP="${SERVER_VIRTUAL_IP:-10.126.5.1}" VIRTUAL_IP="dhcp" HOSTNAME=$(hostname) @@ -178,7 +189,7 @@ else fi echo " 网络名称: $NETWORK_NAME" echo -e "${CYAN}==========================================${NC}" -read -p "确认以上信息?[Y/n]: " CONFIRM +tty_read "确认以上信息?[Y/n]: " CONFIRM CONFIRM="${CONFIRM:-Y}" if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then exec bash "$0"