112 lines
2.7 KiB
Bash
112 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
red(){
|
|
echo -e "\033[31m$1\033[0m"
|
|
}
|
|
|
|
green(){
|
|
echo -e "\033[32m$1\033[0m"
|
|
}
|
|
|
|
|
|
# 获取系统包管理器
|
|
get_package_manager(){
|
|
if command -v apt-get &> /dev/null; then
|
|
echo "apt-get"
|
|
elif command -v yum &> /dev/null; then
|
|
echo "yum"
|
|
else
|
|
echo "未知的系统包管理器"
|
|
return 1 # 返回错误状态码
|
|
fi
|
|
}
|
|
|
|
# 检查 jq 是否已安装
|
|
check_jq() {
|
|
if command -v jq >/dev/null 2>&1; then
|
|
return 0
|
|
else
|
|
echo "jq 未安装"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 检查 Docker 是否已安装
|
|
check_docker() {
|
|
if command -v docker >/dev/null 2>&1; then
|
|
return 0
|
|
else
|
|
echo "Docker 未安装"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 检查 docker-compose 是否已安装
|
|
check_docker_compose() {
|
|
if command -v docker-compose >/dev/null 2>&1; then
|
|
return 0
|
|
elif docker compose version >/dev/null 2>&1; then ## Docker 内置 compose 已安装
|
|
return 0
|
|
else
|
|
echo "docker-compose 未安装"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 安装docker
|
|
install_docker(){
|
|
echo 安装docker...
|
|
curl -fsSL https://get.docker.com | bash -s docker
|
|
}
|
|
|
|
# 安装docker-compose
|
|
install_docker_compose(){
|
|
echo 安装docker-compose...
|
|
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-linux-x86_64
|
|
chmod +x /usr/local/bin/docker-compose
|
|
}
|
|
|
|
# 动态安装软件包
|
|
install_package() {
|
|
local package_name=$1
|
|
if command -v "$package_name" &> /dev/null; then
|
|
echo "$package_name 已安装, 跳过."
|
|
return 0
|
|
fi
|
|
|
|
echo "安装 $package_name..."
|
|
package_manager=$(get_package_manager)
|
|
if [ "$package_manager" == "apt-get" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y "$package_name"
|
|
elif [ "$package_manager" == "yum" ]; then
|
|
sudo yum install -y "$package_name"
|
|
else
|
|
echo "未知的包管理器, 请手动安装 $package_name."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
check_config(){
|
|
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../" # 脚本文件夹绝对路径
|
|
local config_file="$script_dir/../conf/config.json"
|
|
|
|
# 如果配置文件不存在或者空白
|
|
if [ ! -e "$config_file" ] || [ ! -s "$config_file" ];then
|
|
echo "请先'创建配置'"
|
|
exit 1
|
|
fi
|
|
|
|
# 如果配置未初始化
|
|
uuid=$(jq -r '.inbounds[0].settings.clients[0].id' "$config_file")
|
|
if [ "$uuid" = "你的UUID" ] || [ -z "$uuid" ]; then
|
|
echo "请先'创建配置'"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查配置文件是否为有效的JSON格式
|
|
if ! jq '.' "$config_file" >/dev/null 2>&1; then
|
|
echo "配置文件不是有效的JSON格式, 请重新生成配置文件."
|
|
exit 1
|
|
fi
|
|
} |