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 "操作完成。"
相关推荐
小白学大数据9 小时前
集成Scrapy与异步库:Scrapy+Playwright自动化爬取动态内容
运维·爬虫·scrapy·自动化
程序员陆通9 小时前
CentOS/AlmaLinux 9 中 SSH 服务启动失败:OpenSSL 版本不匹配解决
linux·centos·ssh
ZYMFZ9 小时前
HAProxy 简介及配置
linux·负载均衡·haproxy
敲上瘾9 小时前
Linux系统C++开发环境搭建工具(三)—— brpc使用指南
linux·c++·分布式·rpc
李少兄9 小时前
解决 CentOS 8 报错:Failed to download metadata for repo ‘BaseOS‘
linux·运维·centos
杜子不疼.10 小时前
Linux】 性能调优实战:内核参数优化技巧
linux·运维·php
墨寒博客栈10 小时前
Linux基础常用命令
java·linux·运维·服务器·前端
重生之我在20年代敲代码10 小时前
【Linux网络编程】初识网络,理解TCP/IP五层模型
linux·运维·服务器·网络
**蓝桉**10 小时前
服务器管理
linux·笔记
疯狂的小强呀10 小时前
如何利用 Jupyter 从浏览器访问远程服务器
服务器·jupyter·浏览器访问服务器·jupyter远程访问服务器