feat: 无头启动脚本 start.sh / start.bat (依赖检测 + 配置模板复制)
This commit is contained in:
@@ -0,0 +1,71 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
title SenSu Server
|
||||||
|
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo 🐱 SenSu 依赖检测...
|
||||||
|
echo.
|
||||||
|
|
||||||
|
set PASS=0
|
||||||
|
set FAIL=0
|
||||||
|
|
||||||
|
:: ── Python ──
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
echo [OK] Python
|
||||||
|
set /a PASS+=1
|
||||||
|
) else (
|
||||||
|
echo [FAIL] Python 未安装
|
||||||
|
set /a FAIL+=1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: ── Python 依赖 ──
|
||||||
|
python -c "import aiohttp" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] aiohttp& set /a PASS+=1) else (echo [FAIL] aiohttp 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
python -c "import yaml" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] PyYAML& set /a PASS+=1) else (echo [FAIL] PyYAML 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
python -c "import textual" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] Textual& set /a PASS+=1) else (echo [FAIL] Textual 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
python -c "import watchdog" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] watchdog& set /a PASS+=1) else (echo [FAIL] watchdog 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
python -c "import psutil" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] psutil& set /a PASS+=1) else (echo [FAIL] psutil 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
python -c "import rich" >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (echo [OK] rich& set /a PASS+=1) else (echo [FAIL] rich 缺失& set /a FAIL+=1)
|
||||||
|
|
||||||
|
:: ── 配置文件 ──
|
||||||
|
if exist "config\framework\base_config.yaml" (
|
||||||
|
echo [OK] base_config.yaml
|
||||||
|
set /a PASS+=1
|
||||||
|
) else if exist "config\framework\base_config.yaml.example" (
|
||||||
|
copy "config\framework\base_config.yaml.example" "config\framework\base_config.yaml" >nul
|
||||||
|
echo [OK] 从模板创建 base_config.yaml
|
||||||
|
set /a PASS+=1
|
||||||
|
) else (
|
||||||
|
echo [FAIL] 配置文件缺失
|
||||||
|
set /a FAIL+=1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
if %FAIL% gtr 0 (
|
||||||
|
echo [FAIL] %FAIL% 项缺失,请先安装: pip install -r requirements.txt
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [OK] 所有依赖就绪 (%PASS% 项)
|
||||||
|
echo.
|
||||||
|
echo 🚀 启动 SenSu (无头模式)...
|
||||||
|
echo Web 面板: http://0.0.0.0:4200/SenSu
|
||||||
|
echo.
|
||||||
|
|
||||||
|
python main.py --headless
|
||||||
|
|
||||||
|
pause
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SenSu 无头启动脚本 (Linux/macOS/Termux)
|
||||||
|
# 自动检测依赖完整性后启动
|
||||||
|
|
||||||
|
set -e
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
|
# ── 颜色 ──
|
||||||
|
RED='\033[31m'; GREEN='\033[32m'; YELLOW='\033[33m'; NC='\033[0m'
|
||||||
|
pass=0; fail=0
|
||||||
|
check() {
|
||||||
|
if command -v "$1" &>/dev/null || python3 -c "$2" 2>/dev/null; then
|
||||||
|
echo -e " ${GREEN}✓${NC} $3"
|
||||||
|
pass=$((pass+1))
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} $3 ${YELLOW}(缺失)${NC}"
|
||||||
|
fail=$((fail+1))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "🐱 SenSu 依赖检测..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ── 系统依赖 ──
|
||||||
|
check "python3" "" "Python 3.11+"
|
||||||
|
python3 -c "import sys; assert sys.version_info >= (3,11)" 2>/dev/null || {
|
||||||
|
echo -e " ${YELLOW}⚠ Python 版本过低,需要 3.11+${NC}"
|
||||||
|
fail=$((fail+1))
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── Python 核心依赖 ──
|
||||||
|
check "" "import aiohttp" "aiohttp (Web 服务)"
|
||||||
|
check "" "import yaml" "PyYAML (配置文件)"
|
||||||
|
check "" "import textual" "Textual (TUI)"
|
||||||
|
check "" "import watchdog" "watchdog (热重载)"
|
||||||
|
check "" "import psutil" "psutil (系统监控)"
|
||||||
|
check "" "import rich" "rich (终端美化)"
|
||||||
|
|
||||||
|
# ── 配置文件 ──
|
||||||
|
if [ -f "config/framework/base_config.yaml" ]; then
|
||||||
|
echo -e " ${GREEN}✓${NC} base_config.yaml"
|
||||||
|
pass=$((pass+1))
|
||||||
|
elif [ -f "config/framework/base_config.yaml.example" ]; then
|
||||||
|
cp config/framework/base_config.yaml.example config/framework/base_config.yaml
|
||||||
|
echo -e " ${GREEN}✓${NC} 从模板创建 base_config.yaml"
|
||||||
|
pass=$((pass+1))
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} 配置文件缺失 (无模板可用)"
|
||||||
|
fail=$((fail+1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
if [ "$fail" -gt 0 ]; then
|
||||||
|
echo -e "${RED}❌ $fail 项缺失,请先安装: pip install -r requirements.txt${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ 所有依赖就绪 ($pass 项)${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "🚀 启动 SenSu (无头模式)..."
|
||||||
|
echo " Web 面板: http://0.0.0.0:4200/SenSu"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
python3 main.py --headless
|
||||||
Reference in New Issue
Block a user