diff --git a/01 b/01 index 9563490..1739585 100644 --- a/01 +++ b/01 @@ -1,114 +1,96 @@ #!/bin/bash -# 完整服务器控制器 v3.0 -# 支持多客户端管理、命令执行、脚本分发 +echo "开始卸载 Docker..." -SERVER_PORT=25555 -LOG_FILE="/var/log/controller_server.log" -CLIENTS_FILE="/var/lib/controller_clients.txt" -SCRIPT_DIR="/opt/controller_scripts" -BACKUP_DIR="/var/backup/controller" -CONFIG_FILE="/etc/controller_server.conf" -PID_FILE="/var/run/controller_server.pid" - -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -NC='\033[0m' - -# 初始化 -init_server() { - mkdir -p "$(dirname "$LOG_FILE")" - mkdir -p "$(dirname "$CLIENTS_FILE")" - mkdir -p "$SCRIPT_DIR" - mkdir -p "$BACKUP_DIR" - - # 创建配置文件 - if [[ ! -f "$CONFIG_FILE" ]]; then - cat > "$CONFIG_FILE" << EOF -SERVER_PORT=$SERVER_PORT -LOG_FILE="$LOG_FILE" -CLIENTS_FILE="$CLIENTS_FILE" -SCRIPT_DIR="$SCRIPT_DIR" -HEARTBEAT_TIMEOUT=300 -MAX_CLIENTS=1000 -EOF - fi - - source "$CONFIG_FILE" - create_default_scripts -} - -# 创建默认脚本 -create_default_scripts() { - # 系统管理脚本 - cat > "$SCRIPT_DIR/system_info.sh" << 'EOF' -#!/bin/bash -echo "=== 系统信息 ===" -echo "主机名: $(hostname)" -echo "系统: $(grep PRETTY_NAME /etc/os-release 2>/dev/null | cut -d= -f2 | tr -d '"' || echo 'unknown')" -echo "内核: $(uname -r)" -echo "架构: $(uname -m)" -echo "上线时间: $(uptime -p 2>/dev/null || uptime)" -echo "内存: $(free -h 2>/dev/null || echo 'unknown')" -echo "磁盘: $(df -h 2>/dev/null || echo 'unknown')" -EOF - - # 服务管理脚本 - cat > "$SCRIPT_DIR/restart_services.sh" << 'EOF' -#!/bin/bash -echo "重启系统服务..." -systemctl restart networking 2>/dev/null || systemctl restart network 2>/dev/null -systemctl restart ssh 2>/dev/null || systemctl restart sshd 2>/dev/null -echo "服务重启完成" -EOF - - # 更新脚本 - cat > "$SCRIPT_DIR/update_system.sh" << 'EOF' -#!/bin/bash -echo "开始系统更新..." -if command -v apt-get &>/dev/null; then - apt-get update && apt-get upgrade -y -elif command -v yum &>/dev/null; then - yum update -y -elif command -v dnf &>/dev/null; then - dnf update -y -elif command -v apk &>/dev/null; then - apk update && apk upgrade +# 检测系统类型 +if [ -x "$(command -v yum)" ]; then + echo "检测到 CentOS/RHEL 系统" + PKG_MGR="yum" +elif [ -x "$(command -v apt-get)" ]; then + echo "检测到 Debian/Ubuntu 系统" + PKG_MGR="apt-get" +else + echo "不支持的包管理器" + exit 1 fi -echo "系统更新完成" -EOF - # 网络诊断脚本 - cat > "$SCRIPT_DIR/network_info.sh" << 'EOF' -#!/bin/bash -echo "=== 网络信息 ===" -ip addr show 2>/dev/null || ifconfig 2>/dev/null || echo "无法获取网络信息" -echo "=== 路由表 ===" -ip route show 2>/dev/null || route -n 2>/dev/null || echo "无法获取路由信息" -EOF +# 停止 Docker 服务 +echo "停止 Docker 相关服务..." +sudo systemctl stop docker docker.socket containerd 2>/dev/null || true +sudo pkill -f docker 2>/dev/null || true - chmod +x "$SCRIPT_DIR"/*.sh -} +# 卸载 Docker 包 +echo "卸载 Docker 软件包..." +if [ "$PKG_MGR" = "yum" ]; then + sudo yum remove -y docker \ + docker-client \ + docker-client-latest \ + docker-common \ + docker-latest \ + docker-latest-logrotate \ + docker-logrotate \ + docker-engine \ + containerd \ + runc \ + docker-ce \ + docker-ce-cli \ + docker-ce-rootless-extras +else + sudo apt-get purge -y docker-ce \ + docker-ce-cli \ + docker-ce-rootless-extras \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin +fi -# 日志函数 -log() { - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo -e "[$timestamp] $1" | tee -a "$LOG_FILE" -} +# 删除所有 Docker 数据和配置 +echo "删除 Docker 数据和配置..." +sudo rm -rf /var/lib/docker +sudo rm -rf /var/lib/containerd +sudo rm -rf /etc/docker +sudo rm -rf /var/run/docker.sock +sudo rm -rf /var/run/containerd +sudo rm -rf /etc/apparmor.d/docker +sudo rm -rf /usr/bin/docker* +sudo rm -rf /usr/libexec/docker +sudo rm -rf /usr/lib/docker* -print_color() { - echo -e "${2}${1}${NC}" -} +# 删除 Docker 用户组(如果存在且没有其他用户) +echo "清理 Docker 用户组..." +if getent group docker >/dev/null; then + echo "警告: 将删除 docker 用户组" + sudo groupdel docker +fi -# 服务器状态 -is_server_running() { - [[ -f "$PID_FILE" ]] && kill -0 $(cat "$PID_FILE") 2>/dev/null -} +# 清理系统 +echo "执行系统清理..." +if [ "$PKG_MGR" = "yum" ]; then + sudo yum autoremove -y +else + sudo apt-get autoremove -y + sudo apt-get autoclean -y +fi + +# 验证卸载 +echo "验证卸载结果..." +if command -v docker >/dev/null 2>&1; then + echo "❌ 卸载不彻底:仍检测到 docker 命令" + exit 1 +else + echo "✅ Docker 已完全卸载" + + # 检查残留文件 + echo "检查残留文件..." + RESIDUAL_FILES=$(find / -name "*docker*" -type f 2>/dev/null | head -10) + if [ -n "$RESIDUAL_FILES" ]; then + echo "发现以下残留文件:" + echo "$RESIDUAL_FILES" + echo "建议手动检查这些文件是否需要保留" + fi +fi + +echo "Docker 卸载完成!"} # 启动服务器 start_server() {