Zookeeper删除提供者服务中的指定IP节点

shell脚本

ZK_CLI 服务安装地址

ZK_SERVER 中心地址

TARGET_IP 目标IP

bash 复制代码
#!/bin/bash

ZK_CLI="/opt/zftzk/zookeeper1/bin/zkCli.sh"
ZK_SERVER="127.0.0.1:2191"
TARGET_IP="127.0.0.2" # 请替换为需要删除的IP
BASE_PATH="/dubbo"

echo "开始查找包含IP $TARGET_IP 的ZooKeeper节点..."

# 第一步:获取所有服务接口
echo "正在获取根节点列表..."
SERVICES=$(echo "ls $BASE_PATH" | $ZK_CLI -server $ZK_SERVER | sed -n '/^\[/p' | tr -d '[],' | tr ',' '\n' | sed 's/^[ \t]*//;s/[ \t]*$//')

if [ -z "$SERVICES" ]; then
    echo "无法获取服务列表,请检查连接和路径。"
    exit 1
fi

for SERVICE in $SERVICES; do
    SERVICE_PATH="$BASE_PATH/$SERVICE/providers"
    
    
	if [[ "$SERVICE" != *"com."* ]]; then
        #echo "跳过非com服务: $SERVICE"
        continue
    fi
	
	#echo "检查服务: $SERVICE_PATH"
	
    #第二步:获取特定服务的所有提供者节点
    PROVIDERS=$(echo "ls $SERVICE_PATH" | $ZK_CLI -server $ZK_SERVER | sed -n '/^\[/p' | tr -d '[],' | tr ',' '\n' | sed 's/^[ \t]*//;s/[ \t]*$//')
    
    #第三步:筛选并处理包含目标IP的节点
    for PROVIDER in $PROVIDERS; do
        if [[ $PROVIDER == *"$TARGET_IP"* ]]; then
            echo "发现匹配节点: $PROVIDER"
            # 执行删除操作
            echo "delete $SERVICE_PATH/$PROVIDER" | $ZK_CLI -server $ZK_SERVER >/dev/null 2>&1
            if [ $? -eq 0 ]; then
                echo "✓ 已成功删除节点: $PROVIDER"
            else
                echo "✗ 删除节点失败: $PROVIDER"
            fi
        fi
    done
done

echo "操作完成。"
相关推荐
恒创科技HK41 分钟前
通用型云服务器与计算型云服务器:您真正需要哪些配置?
运维·服务器
吴佳浩 Alben1 小时前
GPU 生产环境实践:硬件拓扑、显存管理与完整运维体系
运维·人工智能·pytorch·语言模型·transformer·vllm
播播资源2 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry2 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
学不完的2 小时前
Docker数据卷管理及优化
运维·docker·容器·eureka
twc8292 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
lay_liu2 小时前
Linux安装redis
linux·运维·redis
w-w0w-w4 小时前
Unix网络编程
服务器·网络·unix
寂柒4 小时前
序列化与反序列化
linux·网络
lay_liu4 小时前
ubuntu 安装 Redis
linux·redis·ubuntu