265 lines
6.9 KiB
Bash
265 lines
6.9 KiB
Bash
#!/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 "$@"
|