修改Eureka的metadata脚本
最近研究了一下Spring Cloud的灰度发布, 发现方法真是多. 这里先提供一个修改Eureka注册中心里的instance实例的metadata的脚本, 可以方便地用来测试效果.
使用举例: sh eureka.sh BETAZONE-HELLO-REMOTENAME 172.18.0.145 9001 zone main
- 你的应用服务名字为: BETAZONE-HELLO-REMOTENAME
- 实例服务的地址: 172.18.0.145
- 实例服务的端口: 9001
- 要修改的metadata key: zone
- 要修改的metadata 值: main
脚本如下, github地址: https://github.com/cnscud/javaroom/tree/main/betazone2
#!/bin/bash
###
### 修改eureka的instance的metadata.
###
### @author Felix Zhang 2021.6.7
###
# eureka host 服务器地址, 修改为自己的真实地址
eurekaHost='127.0.0.1:8001'
inputready=1
if [ ! -n "$1" ]; then
    echo "command error:serviceName empty!"
    inputready=0
fi
if [ ! -n "$2" ]; then
    echo "command error:serviceIp empty!"
    inputready=0
fi
if [ ! -n "$3" ]; then
    echo "command error:servicePort empty!"
    inputready=0
fi
if [ ! -n "$4" ]; then
    echo "command error:metadata-key empty!"
    inputready=0
fi
if [ ! -n "$5" ]; then
    echo "command error:metadata-value empty!"
    inputready=0
fi
if [ $inputready -eq 0 ]; then
    echo "Command Format: $0 serviceName serviceIp servicePort metadata-key metadata-value"
    echo "Example: $0 serviceName1 192.168.0.105 9001 zone beta"
    exit
fi
#转为小写
serviceName=$(echo "$1" | tr '[:upper:]' '[:lower:]')
hostName=$2
servicePort=$3
metakey=$4
metavalue=$5
# download eureka service list xml
echo 'start download eureka service list xml!'
curl -X GET http://${eurekaHost}/eureka/apps > eureka.xml
if [ $? -eq 0 ]; then
  echo "download eureka service success!"
else
  echo "download eureka service fail!"
fi
findinstance=0
myinstanceId="$hostName:$serviceName:$servicePort"
realinstanceId=""
i=1
while true;
do
  xmllint --xpath "//instance[$i]/app/text()" eureka.xml >> /dev/null 2>&1
  if [ $? -eq 0 ]; then
    appName=$(xmllint --xpath "//instance[$i]/app/text()" eureka.xml)
    lowcaseAppName=$(echo "$appName" | tr '[:upper:]' '[:lower:]')
    ipAddr=$(xmllint --xpath "//instance[$i]/ipAddr/text()" eureka.xml)
    port=$(xmllint --xpath "//instance[$i]/port/text()" eureka.xml)
    instanceId=$(xmllint --xpath "//instance[$i]/instanceId/text()" eureka.xml)
    echo "instance: $appName $ipAddr $port --> $instanceId"
    if [ "$ipAddr:$lowcaseAppName:$port" == "$myinstanceId" ]; then
      findinstance=1
      realinstanceId=$instanceId
    fi
  else
    break
  fi
  #递增
  let i+=1
done
if [ $findinstance -eq 0 ]; then
  echo "not find your instance: $myinstanceId"
  exit
else
  echo "find your instance: $myinstanceId --> $realinstanceId"
fi
curl -X PUT "$eurekaHost/eureka/apps/$serviceName/$realinstanceId/metadata?$metakey=$metavalue"
if [ $? -eq 0 ]; then
  echo "update $serviceName $hostName $metakey:$metavalue success!"
else
  echo "update $serviceName $hostName $metakey:$metavalue fail!"
fi
参考文章: https://blog.csdn.net/leadseczgw01/article/details/113242279
修改Eureka的metadata脚本的更多相关文章
- linux批量修改文件名的shell脚本
		linux中批量修改文件名的shell脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下 使用 rename 命令 ======================== NAME ... 
- 零零碎碎写的shell脚本(二):一键修改网络配置信息脚本
		#!/bin/bash ip_mod=$ mask_mod=$ gw_mod=$ dns_mod=$ hostname_mod=$ hosts=/etc/hosts ifcfg=/etc/syscon ... 
- 使用python修改QQ密保(脚本)
		一.基于以下目的: 1.为了增加对Http协议理解能力,对QQ密保修改的请求进行了分析 2.为了锻炼python的编写能力 3.对web综合知识的理解 花了点时间写了这个脚本,下面介绍脚本的过程 二. ... 
- 基于binlog来分析mysql的行记录修改情况(python脚本分析)
		最近写完mysql flashback,突然发现还有有这种使用场景:有些情况下,可能会统计在某个时间段内,MySQL修改了多少数据量?发生了多少事务?主要是哪些表格发生变动?变动的数量是怎 ... 
- 批量修改git仓库地址脚本
		前言 公司的代码都存放在自己搭建的gitlab上面.之前由于老板升级gitlab.导致下面有个叫做"api"的groups无法访问.通过无所不能的谷歌才知道.在gitlab在某 ... 
- Python3 写的远程批量修改文件内容的脚本
		一.说明: 1.利用Python的paramiko模块,调用远程的shell命令去修改相应文件. 2.有一个专用配置文件,列出服务器清单. 3.Python循环读取配置文件的服务器IP去连接它,并执行 ... 
- Android开发之修改Manifest中meta-data的数据
		代码 private void initFMMap() { ApplicationInfo appInfo = null; try { appInfo = this.getPackageManager ... 
- C# 修改PNG图片metadata信息 (含转载fancyblogs博文)
		WPF中使用 metadata-extractor可以轻松获取 PNG图片metadata信息 NuGet 获取地址: PM> Install-Package MetadataExtractor ... 
- linux如何通过脚本来修改用户的密码?脚本自动化修改用户密码?
		需求描述: linux环境中在创建用户的时候,涉及到修改用户的密码,一般是通过passwd命令进行修改,需要多次的确认,这里考虑通过一条命令直接对密码进行修改 不需要进行交互的方式.在此记录. 操作过 ... 
随机推荐
- Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇)
			Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 目录 Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 1 Optimizing Storage Layout f ... 
- css初级代码
			<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ... 
- Maven项目无法下载JAR包,输入mvn help:system出现No plugin found for prefix 'help' in the current project and in the plugin groups的解决方案
			这个问题困扰了我很久,一直无法解决:我在虚拟机里面按照同样的步骤配置了三次maven项目,每次都能成功:可一旦到外面maven项目总是创建失败,输入mvn help:system总是出现No plug ... 
- Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕
			转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天 ... 
- UVA 11475 Extend to Palindrome hash
			题意: 给出一个字符串,让你往后添加最少的字符,使其成为回文串. 分析: 题目就相当于求后缀字符串为回文串的最长长度,判断回文串要O(n)时间,直接判断肯定不行.我们从后往前枚举,每次字符串与上一个字 ... 
- Java运算中的类型转换
			类型转换 运算中,不同类型的数据先转化为同一类型,然后进行运算 public class Dome04 { public static void main(String[] args) { //int ... 
- margin属性总结,你想知道的这里都有
			一.前言 在学习CSS时,遇到的很多问题都是和margin有关,这个小怪兽总是出其不意的让我的界面排版变的混乱,还让人摸不着头脑,原因还是在于我对他的一些属性没有进行一个深入的了解,导致我在设计之初就 ... 
- 资源:mysql下载路径
			mysql的下载路劲 https://dev.mysql.com/downloads/mysql/ 
- Linux文件目录结构详解 (转)
			整理自<鸟哥的私房菜> 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能, ... 
- linux学习之路第六天(文件目录类第二部分)
			文件目录类 1.cat指令 作用:查看文件内容,是以只读的方式打开. 基本语法 cat [选项] 要查看的文件 常用选项 -n; 使用细节: cat只能浏览文件,而不能修改文件,通常会和more一起使 ... 
