使用脚本对dubbo服务方url解码

该脚本用于批量从Zookeeper获取Dubbo接口下的服务提供者和服务消费者信息,并进行解码处理。首先,通过Zookeeper的zkCli.sh获取/dubbo/interface下的节点信息,然后过滤并提取服务方和消费方的详细数据。接着,使用正则表达式和awk等工具对URL编码进行解码,最后分别输出服务提供者和消费者的信息到不同的文件中,包括IP、端口、应用名、接口和角色等关键字段。

 场景举例:批量获取zk中/dubbo/interface下服务方、消费方的信息,得到的内容中各属性字段不易读取,需要解码。

 获取dubbo节点信息:

#!/bin/bash

cluster=$1
idc=$2


sh ./zookeeper/bin/zkCli.sh ls /dubbo > ${idc}_interface.txt


##根据实际情况,排除客户端连接返回的无用信息
cat ${idc}_interface.txt | grep -v "2023-08-09" | grep "\[.*\]" -o  | sed 's/, /\n/g;s/\[//g;s/\]//g' > ${idc}_interface_col.txt

for i in `cat ${idc}_interface_col.txt`;do providers=`sh ./zookeeper/bin/zkCli.sh ls /dubbo/$i/providers`;echo $providers;done > ${idc}_providers.txt
for i in `cat ${idc}_interface_col.txt`;do consumers=`sh ./zookeeper/bin/zkCli.sh ls /dubbo/$i/consumers`;echo $consumers;done > ${idc}_consumers.txt

cat ${idc}_providers.txt | sed 's#\%3A\%2F\%2F#\:\/\/#g;s#\%3F#\?#g;s#\%3D#\=#g;s#\%26#\&#g;s#\%2F#\/#g;s#\%2C#\,#g;s#\%3A#\:#g' | grep "\[dubbo.*\]" -o | awk -F']' '{print $1}' | sed 's/\[//g;s/, /\n/g' > ${idc}_providers_col.txt

cat ${idc}_consumers.txt | sed 's#\%3A\%2F\%2F#\:\/\/#g;s#\%3F#\?#g;s#\%3D#\=#g;s#\%26#\&#g;s#\%2F#\/#g;s#\%2C#\,#g;s#\%3A#\:#g' | grep "\[consumer.*\]" -o | awk -F']' '{print $1}' | sed 's/\[//g;s/, /\n/g' > ${idc}_consumers_col.txt


##provider字段根据实际情况和需求进行增改
for url in `cat ${idc}_providers_col.txt`
do
  ip=`echo $url| awk -F'/|:' '{print $4}'`
  port=`echo $url| awk -F'/|:' '{print $5}'`
  application=`echo $url | grep -o "application=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  interface=`echo $url | grep -o "interface=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  side=`echo $url | grep -o "side=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  echo $cluster,$idc,$ip,$port,$application,$interface,$side
done > ${idc}_providers.db


##consumer字段根据实际情况和需求进行增改
for url in `cat ${idc}_consumers_col.txt`
do
  ip=`echo $url| awk -F'/|:' '{print $4}'`
  application=`echo $url | grep -o "application=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  interface=`echo $url | grep -o "interface=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  side=`echo $url | grep -o "side=.*\&" | awk -F'&' '{print $1}' | awk -F'=' '{print $2}'`
  echo $cluster,$idc,$ip,$application,$interface,$side
done > ${idc}_consumers.db

脚本中的解码解释:

编码对应关系

url编码url解码
%3A%2F%2F://
%3F?
%3D=
%26&
%2F/
%2C,
%3A:

可以使用sed直接修改文件:

sed -i -e 's#\%3A\%2F\%2F#\:\/\/#g' -e 's#\%3F#\?#g' -e 's#\%3D#\=#g' -e 's#\%26#\&#g' -e 's#\%2F#\/#g' -e 's#\%2C#\,#g' -e 's#\%3A#\:#g' providers.txt
或者
sed -i 's#\%3A\%2F\%2F#\:\/\/#g;s#\%3F#\?#g;s#\%3D#\=#g;s#\%26#\&#g;s#\%2F#\/#g;s#\%2C#\,#g;s#\%3A#\:#g' providers.txt

consumers文件同理。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值