#!/bin/bash # Web Result 静态服务器启动脚本 (Node.js版) # 端口: 4155 # 支持局域网访问 # 颜色定义 GREEN='' BLUE='' YELLOW='' RED='' NC='' # 获取脚本所在目录 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # 获取局域网IP get_lan_ip() { if [[ "$OSTYPE" == "darwin"* ]]; then ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}' else hostname -I | awk '{print $1}' fi } echo -e "${BLUE}======================================${NC}" echo -e "${BLUE} Web Result 静态服务器${NC}" echo -e "${BLUE} 端口: 4155${NC}" echo -e "${BLUE} 支持局域网访问${NC}" echo -e "${BLUE}======================================${NC}" echo # 切换到脚本所在目录 cd "$SCRIPT_DIR" # 检查 Node.js if ! command -v node &> /dev/null; then echo -e "${RED}[错误] Node.js 未安装${NC}" echo -e "${YELLOW}请先安装 Node.js: https://nodejs.org${NC}" exit 1 fi echo -e "${GREEN}[信息] Node.js 版本: $(node --version)${NC}" # 获取局域网IP LAN_IP=$(get_lan_ip) if [ -z "$LAN_IP" ]; then echo -e "${YELLOW}[警告] 无法获取局域网IP,将只监听本地${NC}" LAN_IP="localhost" fi # 检查端口是否被占用 if lsof -Pi :4155 -sTCP:LISTEN -t >/dev/null 2>&1; then echo -e "${YELLOW}[警告] 端口 4155 已被占用${NC}" echo -e "${BLUE}[信息] 正在查看占用进程...${NC}" lsof -i :4155 read -p "是否终止占用进程?(y/N): " kill_process if [[ $kill_process =~ ^[Yy]$ ]]; then echo -e "${BLUE}[信息] 正在终止占用进程...${NC}" lsof -ti:4155 | xargs kill -9 echo -e "${GREEN}[成功] 进程已终止${NC}" sleep 1 else echo -e "${RED}[错误] 无法启动服务器,端口被占用${NC}" exit 1 fi fi # 启动服务器 echo -e "${GREEN}[信息] 正在启动服务器...${NC}" echo echo -e "${GREEN}╔════════════════════════════════════════╗${NC}" echo -e "${GREEN}║ 服务器访问信息 ║${NC}" echo -e "${GREEN}╠════════════════════════════════════════╣${NC}" echo -e "${GREEN}║${NC} 🏠 本地访问:" echo -e "${GREEN}║${NC} ${BLUE}http://localhost:4155${NC}" echo -e "${GREEN}║${NC}" if [ "$LAN_IP" != "localhost" ]; then echo -e "${GREEN}║${NC} 🌐 局域网访问:" echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:4155${NC}" echo -e "${GREEN}║${NC}" echo -e "${GREEN}║${NC} 📱 移动设备访问:" echo -e "${GREEN}║${NC} ${BLUE}http://${LAN_IP}:4155${NC}" fi echo -e "${GREEN}╚════════════════════════════════════════╝${NC}" echo echo -e "${YELLOW}[提示] 按 Ctrl+C 停止服务器${NC}" echo # 使用 Node.js 启动服务器 node server.js