Compare commits

...
1 Commits
Author SHA1 Message Date
kory 0b5b0323f2 fix: read installer prompts from tty
Release / Build & Release (push) Canceled after 0s
2026-10-02 15:05:31 +08:00
+22 -8
View File
@@ -75,11 +75,25 @@ download_verified() {
mkdir -p "$INSTALL_DIR" "$INSTALL_DIR/data" "$CONF_DIR" mkdir -p "$INSTALL_DIR" "$INSTALL_DIR/data" "$CONF_DIR"
chmod 750 "$INSTALL_DIR" "$CONF_DIR" chmod 750 "$INSTALL_DIR" "$CONF_DIR"
read_tty() {
local prompt="$1"
local __var="$2"
if [ -r /dev/tty ]; then
local value
if ! IFS= read -r -p "$prompt" value < /dev/tty; then
error "无法读取交互输入,请在带 TTY 的终端中运行安装脚本;也可以通过环境变量提供配置。"
fi
printf -v "$__var" '%s' "$value"
else
error "检测不到可用 TTY。当前命令可能通过管道运行;请使用带终端的 shell 执行,例如: curl -fsSL https://raw.githubusercontent.com/kyaring/vps-commander/main/deploy/install.sh | bash"
fi
}
select_mode() { select_mode() {
echo -e "\n请选择安装模式:" echo -e "\n请选择安装模式:"
echo "1) 安装受控端 Agent (推荐:在受控 VPS 上一键连入集群)" echo "1) 安装受控端 Agent (推荐:在受控 VPS 上一键连入集群)"
echo "2) 安装中心端 Hub (管理中心)" echo "2) 安装中心端 Hub (管理中心)"
read -rp "请输入选项 [1-2] (默认 1): " MODE read_tty "请输入选项 [1-2] (默认 1): " MODE
MODE=${MODE:-1} MODE=${MODE:-1}
} }
@@ -92,16 +106,16 @@ install_agent() {
chmod +x "${INSTALL_DIR}/vps-commander-agent" chmod +x "${INSTALL_DIR}/vps-commander-agent"
echo -e "\n--- 配置 Agent 参数 ---" echo -e "\n--- 配置 Agent 参数 ---"
read -rp "请输入 Hub WSS 连接地址 (默认: wss://vpstool.kory.kdns.fr/agent/ws): " HUB_WS read_tty "请输入 Hub WSS 连接地址 (默认: wss://vpstool.kory.kdns.fr/agent/ws): " HUB_WS
HUB_WS=${HUB_WS:-"wss://vpstool.kory.kdns.fr/agent/ws"} HUB_WS=${HUB_WS:-"wss://vpstool.kory.kdns.fr/agent/ws"}
DEFAULT_NAME=$(hostname) DEFAULT_NAME=$(hostname)
read -rp "请输入本节点名称 (默认: ${DEFAULT_NAME}): " AGENT_NAME read_tty "请输入本节点名称 (默认: ${DEFAULT_NAME}): " AGENT_NAME
AGENT_NAME=${AGENT_NAME:-${DEFAULT_NAME}} AGENT_NAME=${AGENT_NAME:-${DEFAULT_NAME}}
read -rp "请输入 Agent 独立凭据 Token: " AGENT_TOKEN read_tty "请输入 Agent 独立凭据 Token: " AGENT_TOKEN
while [ -z "$AGENT_TOKEN" ]; do while [ -z "$AGENT_TOKEN" ]; do
read -rp "Agent Token 不能为空,请重新输入: " AGENT_TOKEN read_tty "Agent Token 不能为空,请重新输入: " AGENT_TOKEN
done done
cat << ENV > "${CONF_DIR}/agent.env" cat << ENV > "${CONF_DIR}/agent.env"
@@ -156,16 +170,16 @@ install_hub() {
chmod +x "${INSTALL_DIR}/vps-commander-hub" chmod +x "${INSTALL_DIR}/vps-commander-hub"
echo -e "\n--- 配置 Hub 参数 ---" echo -e "\n--- 配置 Hub 参数 ---"
read -rp "请输入监听端口 (默认 9521): " HUB_PORT read_tty "请输入监听端口 (默认 9521): " HUB_PORT
HUB_PORT=${HUB_PORT:-9521} HUB_PORT=${HUB_PORT:-9521}
GEN_API_KEY=$(od -An -N24 -tx1 /dev/urandom | tr -d ' \n') GEN_API_KEY=$(od -An -N24 -tx1 /dev/urandom | tr -d ' \n')
GEN_PASS=$(od -An -N16 -tx1 /dev/urandom | tr -d ' \n') GEN_PASS=$(od -An -N16 -tx1 /dev/urandom | tr -d ' \n')
read -rp "请输入 API Key (默认随机生成): " API_KEY read_tty "请输入 API Key (默认随机生成): " API_KEY
API_KEY=${API_KEY:-$GEN_API_KEY} API_KEY=${API_KEY:-$GEN_API_KEY}
read -rp "请输入 Web 管理面板密码 (默认随机生成): " WEB_PASS read_tty "请输入 Web 管理面板密码 (默认随机生成): " WEB_PASS
WEB_PASS=${WEB_PASS:-$GEN_PASS} WEB_PASS=${WEB_PASS:-$GEN_PASS}
cat << ENV > "${CONF_DIR}/hub.env" cat << ENV > "${CONF_DIR}/hub.env"