mosdns/startup-check.sh
dengxiongjian 0413ee5d44
Some checks failed
Test mosdns / build (push) Has been cancelled
二次开发
2025-10-16 21:07:48 +08:00

135 lines
3.0 KiB
Bash

#!/bin/bash
# MosDNS 启动前检查脚本
# 自动创建必要目录,确保服务正常启动
set -e
echo "========================================="
echo " MosDNS 启动前检查"
echo "========================================="
echo ""
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 1. 检查当前目录
echo -e "${YELLOW}[1/5] 检查当前目录...${NC}"
CURRENT_DIR=$(pwd)
echo "当前目录: $CURRENT_DIR"
echo ""
# 2. 创建必要目录
echo -e "${YELLOW}[2/5] 创建必要目录...${NC}"
directories=("config.d/rules" "domains" "config")
for dir in "${directories[@]}"; do
if [ ! -d "$dir" ]; then
mkdir -p "$dir"
echo -e "${GREEN}${NC} 创建目录: $dir"
else
echo -e "${GREEN}${NC} 目录已存在: $dir"
fi
done
echo ""
# 3. 检查配置文件
echo -e "${YELLOW}[3/5] 检查配置文件...${NC}"
CONFIG_FILES=("config1.yaml" "config.yaml" "config-template.yaml" "config-minimal.yaml")
FOUND_CONFIG=""
for config in "${CONFIG_FILES[@]}"; do
if [ -f "$config" ]; then
echo -e "${GREEN}${NC} 找到配置文件: $config"
FOUND_CONFIG="$config"
break
fi
done
if [ -z "$FOUND_CONFIG" ]; then
echo -e "${RED}✗ 未找到配置文件${NC}"
echo "请确保以下文件之一存在:"
for config in "${CONFIG_FILES[@]}"; do
echo " - $config"
done
exit 1
fi
echo ""
# 4. 检查可执行文件
echo -e "${YELLOW}[4/5] 检查可执行文件...${NC}"
MOSDNS_BINS=("mosdns-linux-amd64" "mosdns" "./mosdns")
FOUND_BIN=""
for bin in "${MOSDNS_BINS[@]}"; do
if [ -f "$bin" ] && [ -x "$bin" ]; then
echo -e "${GREEN}${NC} 找到可执行文件: $bin"
FOUND_BIN="$bin"
break
fi
done
if [ -z "$FOUND_BIN" ]; then
echo -e "${RED}✗ 未找到可执行文件${NC}"
exit 1
fi
echo ""
# 5. 显示目录结构
echo -e "${YELLOW}[5/5] 当前目录结构:${NC}"
echo ""
echo "$CURRENT_DIR/"
echo "├── $FOUND_BIN (可执行文件)"
echo "├── $FOUND_CONFIG (配置文件)"
echo "├── config.d/"
echo "│ └── rules/ (规则文件目录)"
if [ -n "$(ls -A config.d/rules 2>/dev/null)" ]; then
for file in config.d/rules/*.yaml; do
if [ -f "$file" ]; then
echo "│ └── $(basename $file)"
fi
done
fi
echo "├── domains/ (域名列表目录)"
if [ -n "$(ls -A domains 2>/dev/null)" ]; then
for file in domains/*; do
if [ -f "$file" ]; then
echo "│ └── $(basename $file)"
fi
done
fi
echo "└── config/ (其他配置)"
echo ""
echo "========================================="
echo -e "${GREEN}✓ 检查完成!${NC}"
echo "========================================="
echo ""
echo "启动命令:"
echo " $FOUND_BIN start -c $FOUND_CONFIG"
echo ""
echo "按回车键启动服务,或按 Ctrl+C 取消..."
read
# 启动服务
echo ""
echo -e "${YELLOW}正在启动 MosDNS...${NC}"
echo ""
$FOUND_BIN start -c $FOUND_CONFIG