feat: 无头启动脚本 start.sh / start.bat (依赖检测 + 配置模板复制)

This commit is contained in:
qinglong
2026-06-13 20:55:28 +08:00
parent 279ddfbdc9
commit 3e106001ed
2 changed files with 136 additions and 0 deletions
+71
View File
@@ -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
Executable
+65
View File
@@ -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