重构安装依赖逻辑,动态安装缺失的软件包,移除冗余代码
This commit is contained in:
parent
7e452337ac
commit
e0b47b92b8
@ -49,24 +49,6 @@ check_docker_compose() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 安装jq
|
|
||||||
install_jq(){
|
|
||||||
local package_manager=$(get_package_manager) # 获取包管理器
|
|
||||||
if [[ -z "$package_manager" ]]; then
|
|
||||||
echo "无法识别系统包管理器"
|
|
||||||
return 1 # 无法识别包管理器
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$package_manager" == "apt-get" ]]; then
|
|
||||||
sudo apt-get install -y jq
|
|
||||||
elif [[ "$package_manager" == "yum" ]]; then
|
|
||||||
sudo yum install -y jq
|
|
||||||
else
|
|
||||||
echo "未知的系统包管理器"
|
|
||||||
return 1 # 未知的包管理器
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 安装docker
|
# 安装docker
|
||||||
install_docker(){
|
install_docker(){
|
||||||
echo 安装docker...
|
echo 安装docker...
|
||||||
@ -80,3 +62,38 @@ install_docker_compose(){
|
|||||||
chmod +x /usr/local/bin/docker-compose
|
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 config_dir="./conf"
|
||||||
|
# 如果配置文件不存在或者空白
|
||||||
|
if [ ! -e "$config_dir/config.json" ] || [ ! -s "$config_dir/config.json" ];then
|
||||||
|
echo "请先'创建配置'"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# 如果配置未初始化
|
||||||
|
uuid=$(jq -r '.inbounds[0].settings.clients[0].id' "$config_dir/config.json")
|
||||||
|
if [ "$uuid" = "你的UUID" ] || [ -z "$uuid" ]; then
|
||||||
|
echo "请先'创建配置'"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
61
install.sh
61
install.sh
@ -4,7 +4,7 @@ restart_docker() {
|
|||||||
# 如果容器未运行,提示启动
|
# 如果容器未运行,提示启动
|
||||||
local running_count=$(docker-compose -f ./docker-compose.yml ps -q | wc -l)
|
local running_count=$(docker-compose -f ./docker-compose.yml ps -q | wc -l)
|
||||||
if [ "$running_count" -eq 0 ]; then
|
if [ "$running_count" -eq 0 ]; then
|
||||||
read -p "容器未启动,是否启动容器?(Y/N): " choice
|
read -p "容器未启动,是否启动容器?(y/n): " choice
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
Y|y)
|
Y|y)
|
||||||
docker-compose -f ./docker-compose.yml up -d
|
docker-compose -f ./docker-compose.yml up -d
|
||||||
@ -22,59 +22,41 @@ restart_docker() {
|
|||||||
docker-compose -f ./docker-compose.yml up -d
|
docker-compose -f ./docker-compose.yml up -d
|
||||||
}
|
}
|
||||||
|
|
||||||
check_config(){
|
|
||||||
local config_dir="./conf"
|
|
||||||
# 如果配置文件不存在或者空白
|
|
||||||
if [ ! -e "$config_dir/config.json" ] || [ ! -s "$config_dir/config.json" ];then
|
|
||||||
echo "请先'创建配置'"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
# 如果配置未初始化
|
|
||||||
uuid=$(jq -r '.inbounds[0].settings.clients[0].id' "$config_dir/config.json")
|
|
||||||
if [ "$uuid" = "你的UUID" ] || [ -z "$uuid" ]; then
|
|
||||||
echo "请先'创建配置'"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# 检查依赖
|
|
||||||
check_dependencies() {
|
|
||||||
# 内部退出函数:只在本函数作用域内有效
|
|
||||||
exit_with_dep_error() {
|
|
||||||
echo "请执行 安装依赖 操作"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
source ./bin/utils/base.sh
|
|
||||||
check_jq || exit_with_dep_error
|
|
||||||
check_docker || exit_with_dep_error
|
|
||||||
check_docker_compose || exit_with_dep_error
|
|
||||||
}
|
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
install_dependencies(){
|
install_dependencies(){
|
||||||
source ./bin/utils/base.sh
|
local script_dir="$(cd "$(dirname "$0")"; pwd)/bin" # 脚本所在目录
|
||||||
|
source "${script_dir}/utils/base.sh"
|
||||||
|
|
||||||
|
if ! command -v curl >/dev/null 2>&1; then
|
||||||
|
install_package curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v wget >/dev/null 2>&1; then
|
||||||
|
install_package wget
|
||||||
|
fi
|
||||||
|
|
||||||
if ! command -v jq >/dev/null 2>&1; then
|
if ! command -v jq >/dev/null 2>&1; then
|
||||||
echo "jq 未安装,开始安装..."
|
echo 安装jq...
|
||||||
install_jq
|
install_package jq
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
echo "Docker 未安装,开始安装..."
|
echo 安装docker...
|
||||||
install_docker
|
curl -fsSL https://get.docker.com | bash -s docker
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! command -v docker-compose >/dev/null 2>&1; then
|
if ! command -v docker-compose >/dev/null 2>&1; then
|
||||||
echo "docker-compose 未安装,开始安装..."
|
echo 安装docker-compose...
|
||||||
install_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
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
main(){
|
main(){
|
||||||
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
|
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" # 脚本文件夹路径
|
||||||
|
source "${script_dir}/utils/base.sh"
|
||||||
|
|
||||||
# 显示菜单
|
# 显示菜单
|
||||||
echo "请选择一个操作:"
|
echo "请选择一个操作:"
|
||||||
@ -101,18 +83,15 @@ main(){
|
|||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
# 创建配置 / 重置配置
|
# 创建配置 / 重置配置
|
||||||
check_dependencies
|
|
||||||
bash $script_dir/create_config.sh
|
bash $script_dir/create_config.sh
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
# 查看分享链接
|
# 查看分享链接
|
||||||
check_dependencies
|
|
||||||
check_config
|
check_config
|
||||||
bash $script_dir/print_share_link.sh
|
bash $script_dir/print_share_link.sh
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
# 启动容器
|
# 启动容器
|
||||||
check_dependencies
|
|
||||||
bash $script_dir/run.sh
|
bash $script_dir/run.sh
|
||||||
bash $script_dir/print_share_link.sh
|
bash $script_dir/print_share_link.sh
|
||||||
;;
|
;;
|
||||||
@ -126,14 +105,12 @@ main(){
|
|||||||
;;
|
;;
|
||||||
7)
|
7)
|
||||||
# 修改端口
|
# 修改端口
|
||||||
check_dependencies
|
|
||||||
check_config
|
check_config
|
||||||
bash $script_dir/update_port.sh
|
bash $script_dir/update_port.sh
|
||||||
restart_docker
|
restart_docker
|
||||||
;;
|
;;
|
||||||
8)
|
8)
|
||||||
# 修改Reality目标域名
|
# 修改Reality目标域名
|
||||||
check_dependencies
|
|
||||||
check_config
|
check_config
|
||||||
bash $script_dir/update_reality_dest.sh
|
bash $script_dir/update_reality_dest.sh
|
||||||
restart_docker
|
restart_docker
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user