修改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命令进行修改,需要多次的确认,这里考虑通过一条命令直接对密码进行修改 不需要进行交互的方式.在此记录. 操作过 ...
随机推荐
- ANDROID开发 Fatal signal 11(SIGSEGV) at 0x问题解决方案
最近做ANDROID开发,也遇到了很多程序员遇到的一个问题:FATAL SIGNAL 11(SIGSEGV) at 0xxxxx,自然是各种搜索是否有人已然解决,虽然搜索出来的已有案例不少,基本都是内 ...
- Unity3D学习笔记1——绘制一个三角形
目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发 ...
- 安卓控件RecycleView的简单使用
RecycleView的使用 目录 RecycleView的使用 技术概述 技术详述 遇到问题和解决 总结 参考文献 技术概述 RecycleView是谷歌官方对ListView的改进(并不是替代), ...
- 滑动窗口经典题 leetcode 3. 无重复字符的最长子串
题目 解题思路 题目要求找出给定字符串中不含有重复字符的最长子串的长度.这是一个典型的滑动窗口的题目,可以通过滑动窗口去解答. 滑动窗口 具体操作如下图示:找到一个子串 s[left...right] ...
- 虚拟机安装Windows7旗舰版-超详细图文
虚拟机安装Windows7旗舰版 ----就是想弄一个自己用的CTF+渗透测试的工具集成系统,本来想着用真实机弄就好了,但还是出于安全的考虑,还是再装个虚拟机吧~ 1.先到MSDN找好安装包:http ...
- 2.14、制作Centos模板及优化操作
1.安装系统: (1)规范网卡为eth0的模式: (2)选择时区: (3)选择支持的语言包含中文: (4)选择软件包: 补充:桌面版包选择: (5)关闭down机内存日志: (6)分区: 1)分区说明 ...
- 2020牛客NOIP赛前集训营-普及组(第二场) 题解
目录 T1 面试 描述 题目描述 输入描述: 输出描述: 题解 代码 T2 纸牌游戏 描述 题目描述 输入描述: 输出描述: 题解 代码 T3 涨薪 描述 题目描述 输入描述: 输出描述: 题解 代码 ...
- 让你发布的nuget包支持源代码调试
前情概要 在不久的从前(也还是要以年为单位哈), 我们如果需要调试第三方代码, 或者框架代码很麻烦. 需要配置symbols, 匹配原始代码路径等. 为此, MS推出了 Source Link 功能, ...
- AcWing 105. 七夕祭
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是TYVJ今年举办了一次线下七夕祭. Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11 ...
- Java:Java的^运算符详解
按位异或运算符(^)是二元运算符,要化为二进制才能进行计算,在两个操作数中,如果两个相应的位相同,则运算结果为0,否则1:例如:int a=15:int b=a^8;运算结果为:a=15:b=7:a( ...