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 "操作完成。"
相关推荐
云飞云共享云桌面4 小时前
智能装备数字化转型:云飞云云桌面助力苏州工厂共享 SolidWorks 算力
运维·服务器·3d·自动化·制造
H.莓飛4 小时前
【C++】内存管理
linux·开发语言·jvm·c++·visual studio
yichengerp4 小时前
中小电子厂用什么ERP?电子厂ERP管理软件实施要点与易呈方案推荐
大数据·运维·人工智能·云计算·制造
励志师code4 小时前
RoCE 网络实战:从 NCCL 调优到 RDMA 硬件计数器排障
linux·运维·网络·云计算
水饺编程4 小时前
第2章:Linux 基础,pwd 命令
linux·c语言·汇编
鱼很腾apoc4 小时前
【MySQL】 第1期 从核心概念到表约束全解析
linux·c语言·数据库·学习·mysql
程序员-Benothing4 小时前
Linux进程优先级与调度:nice、renice、CPU亲和性实战
linux·运维·服务器
程序员-Benothing4 小时前
Linux进程前后台管理:jobs、fg、bg、nohup、disown
linux·运维·服务器
JavaEdge.5 小时前
Docker Compose部署Dify
运维·docker·容器
企业解惑小助手5 小时前
大型企业终端如何统一管理排障实录:批量终端策略不生效问题排查
运维·服务器·网络·域智盾软件