Files
tms-arch-linux-calamares-in…/archiso/airootfs/home/smart/.tms3/starter/tms-tools.sh
2025-11-27 07:04:44 +08:00

265 lines
6.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "$@"