#!/bin/bash # # TMS工具集成菜单脚本 # 功能: 网络检测、TMS工具管理 # # --- 颜色定义 --- C_RESET='\033[0m' C_RED='\033[0;31m' C_GREEN='\033[0;32m' C_YELLOW='\033[0;33m' C_BLUE='\033[0;34m' C_CYAN='\033[0;36m' C_BOLD='\033[1m' # --- 全局变量 --- SCRIPT_DIR="/home/smart/.tms3/starter" NM_SCRIPT="nm_network_manager.sh" TMS_SCRIPT="bbttms.sh" TMS_URL="yuyujing.cn/data/sh/bbttms.sh" # --- 基础函数 --- print_header() { echo -e "${C_CYAN}${C_BOLD}" echo "==================================================" echo " TMS 工具集成菜单" echo "==================================================" echo -e "${C_RESET}" } print_separator() { echo -e "${C_BLUE}--------------------------------------------------${C_RESET}" } log_info() { echo -e "${C_BLUE}[INFO]${C_RESET} $1"; } log_success() { echo -e "${C_GREEN}[SUCCESS]${C_RESET} $1"; } log_error() { echo -e "${C_RED}[ERROR]${C_RESET} $1"; } log_warn() { echo -e "${C_YELLOW}[WARN]${C_RESET} $1"; } # 检查必要的目录和文件 check_environment() { if [ ! -d "$SCRIPT_DIR" ]; then log_error "目录不存在: $SCRIPT_DIR" read -p "是否创建目录? [y/N]: " create_dir if [[ "$create_dir" =~ ^[Yy]$ ]]; then mkdir -p "$SCRIPT_DIR" log_success "已创建目录: $SCRIPT_DIR" else log_error "无法继续,退出脚本。" exit 1 fi fi if [ ! -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then log_warn "网络管理脚本不存在: $SCRIPT_DIR/$NM_SCRIPT" log_info "请确保网络管理脚本已正确放置。" fi } # --- 核心功能函数 --- # 1. 外网检测和网络管理 network_check() { print_separator log_info "启动外网检测..." print_separator if [ -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then cd "$SCRIPT_DIR" || { log_error "无法切换到目录: $SCRIPT_DIR" return 1 } # 检查是否需要sudo权限 if [ "$(id -u)" -ne 0 ]; then log_info "网络管理需要管理员权限,将使用sudo..." sudo sh "$NM_SCRIPT" else sh "$NM_SCRIPT" fi else log_error "网络管理脚本不存在: $SCRIPT_DIR/$NM_SCRIPT" log_info "请先将网络管理脚本放置到正确位置。" return 1 fi } # 2. 快速网络状态检查 quick_network_check() { print_separator log_info "快速网络状态检查..." # 检查网络接口状态 echo -e "${C_BLUE}网络接口状态:${C_RESET}" ip addr show | grep -E "^[0-9]+:|inet " | sed 's/^/ /' echo # 检查外网连接 log_info "测试外网连接..." if ping -c 3 -W 3 8.8.8.8 >/dev/null 2>&1; then log_success "外网连接正常 (Google DNS 8.8.8.8)" elif ping -c 3 -W 3 1.1.1.1 >/dev/null 2>&1; then log_success "外网连接正常 (Cloudflare DNS 1.1.1.1)" elif ping -c 3 -W 3 114.114.114.114 >/dev/null 2>&1; then log_success "外网连接正常 (114 DNS)" else log_error "外网连接失败" return 1 fi # 检查DNS解析 log_info "测试DNS解析..." if nslookup baidu.com >/dev/null 2>&1; then log_success "DNS解析正常" else log_warn "DNS解析可能有问题" fi } # 3. 下载并运行TMS工具 run_tms_tool() { print_separator log_info "启动TMS工具..." print_separator cd "$SCRIPT_DIR" || { log_error "无法切换到目录: $SCRIPT_DIR" return 1 } log_info "正在下载最新版本的TMS工具..." if wget -N "$TMS_URL" -O "$TMS_SCRIPT"; then log_success "TMS工具下载成功" # 检查文件是否存在且可执行 if [ -f "$TMS_SCRIPT" ]; then chmod +x "$TMS_SCRIPT" log_info "正在运行TMS工具..." sh "$TMS_SCRIPT" else log_error "下载的TMS工具文件不存在" return 1 fi else log_error "TMS工具下载失败" log_info "请检查网络连接或URL是否正确: $TMS_URL" return 1 fi } # 5. 一键执行(原脚本功能) one_click_run() { print_separator log_info "执行一键流程..." print_separator # 1. 外网检测 log_info "步骤1: 外网检测" if ! quick_network_check; then log_warn "网络检测发现问题,是否继续? [y/N]" read -r continue_choice if [[ ! "$continue_choice" =~ ^[Yy]$ ]]; then log_info "用户取消操作" return 1 fi fi echo # 2. 运行TMS工具 log_info "步骤2: 运行TMS工具" run_tms_tool print_separator log_success "一键流程执行完成" } # 6. 显示系统信息 show_system_info() { print_separator log_info "系统信息" print_separator neofetch echo -e "\n${C_BLUE}网络接口:${C_RESET}" ip link show | grep -E "^[0-9]+:" | sed 's/^/ /' echo -e "\n${C_BLUE}脚本目录:${C_RESET}" echo " $SCRIPT_DIR" echo -e "\n${C_BLUE}脚本文件状态:${C_RESET}" if [ -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then echo -e " 网络管理脚本: ${C_GREEN}存在${C_RESET}" else echo -e " 网络管理脚本: ${C_RED}不存在${C_RESET}" fi if [ -f "$SCRIPT_DIR/$TMS_SCRIPT" ]; then echo -e " TMS工具脚本: ${C_GREEN}存在${C_RESET}" echo " 最后修改: $(stat -c %y "$SCRIPT_DIR/$TMS_SCRIPT" 2>/dev/null | cut -d. -f1)" else echo -e " TMS工具脚本: ${C_YELLOW}未下载${C_RESET}" fi } # --- 菜单显示 --- show_menu() { clear print_header echo -e "${C_YELLOW}请选择操作:${C_RESET}" echo echo " 1. 外网检测和网络管理" echo " 2. 快速网络状态检查" echo " 3. 下载并运行TMS工具" echo " 4. 一键执行 (检测+TMS)" echo " 5. 显示系统信息" echo " 0. 退出" echo print_separator read -rp "请输入选择 [0-6]: " choice } # --- 主函数 --- main() { # 环境检查 check_environment while true; do show_menu case $choice in 1) network_check ;; 2) quick_network_check ;; 3) run_tms_tool ;; 4) one_click_run ;; 5) show_system_info ;; 0) print_separator log_success "感谢使用TMS工具集成菜单!" exit 0 ;; *) log_error "无效选择,请输入 0-6 之间的数字" ;; esac echo read -p "按回车键继续..." -r done } # --- 脚本入口 --- main "$@"