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 "操作完成。"
相关推荐
深念Y7 分钟前
Docker 镜像体积从 110MB 降到 13MB 后端服务的瘦身
运维·docker·容器
小五传输18 分钟前
【一文解读】汽车制造业协同,跨网跨区域文件传输如何落地?
大数据·运维·安全
高亦真26 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
cuijiecheng201836 分钟前
Rocky Linux 安装 libltc、ltc-tools 和 ltcdump
linux
BlueAsia_Lab36 分钟前
BQB 认证执行标准是什么?核心条款通俗解读
linux·运维·网络
YOU OU39 分钟前
多机部署/负载均衡-LoadBalance
运维·负载均衡
小小、码农40 分钟前
【网络】套接字(Socket)编程——TCP版
linux·服务器·网络·c++·网络协议·tcp/ip
younuo365544 分钟前
广州网站搭建费用明细:域名、服务器与开发成本全解析
服务器·前端·github
邪修king44 分钟前
Re:Linux 系统篇(十六):进程篇(五):O (1) 调度算法深度解析 —— 优先级数组、位图优化与活跃 / 过期双队列
linux·运维·算法
苏三福1 小时前
ubuntu 在文件管理系统中用sftp打开远程文件空白的问题解决
linux·运维·ubuntu