shell脚本命令删除Zookeeper提供者服务中的指定IP节点
shell脚本
ZK_CLI 服务安装地址
ZK_SERVER 中心地址
TARGET_IP 目标IP
#!/bin/bashZK_CLI="/opt/zookeeper/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" ]; thenecho "无法获取服务列表,请检查连接和路径。"exit 1
fifor SERVICE in $SERVICES; doSERVICE_PATH="$BASE_PATH/$SERVICE/providers"if [[ "$SERVICE" != *"com."* ]]; then#echo "跳过非com服务: $SERVICE"continuefi#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; doif [[ $PROVIDER == *"$TARGET_IP"* ]]; thenecho "发现匹配节点: $PROVIDER"# 执行删除操作echo "delete $SERVICE_PATH/$PROVIDER" | $ZK_CLI -server $ZK_SERVER >/dev/null 2>&1if [ $? -eq 0 ]; thenecho "✓ 已成功删除节点: $PROVIDER"elseecho "✗ 删除节点失败: $PROVIDER"fifidone
doneecho "操作完成。"