IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux的shell命令实现nacos服务注册 -> 正文阅读

[系统运维]linux的shell命令实现nacos服务注册

原理:curl模拟post和put请求,定时发送心跳?

bash register_nacos.sh

#!/bin/bash
SERVICE_ADDR=127.0.0.1:8848
IP=127.0.0.1
PORT=9999
SERVICE_NAME=name
GROUP_NAME=DEFAULT_GROUP
USER=nacos
PASS=nacos

urlencode(){
	echo $1 | tr -d '\n' | od -An -tx1 | tr ' ' '%' | tr -d [:cntrl:]
}

postdata="a=1"
declare -A map=(["serviceName"]="$SERVICE_NAME" ["groupName"]="$GROUP_NAME" ["username"]="$USER" ["password"]="$PASS")
for key in ${!map[@]}
do
   postdata=$postdata"&"$key"="${map[$key]}
done

declare -A beatmap=(["serviceName"]="$SERVICE_NAME" ["ip"]="$IP" ["port"]="$PORT" ["weight"]="1.0" ["ephemera"]="true" ["healthy"]="true")
beatstr=""
for key in ${!beatmap[@]}
do
   beatstr=$beatstr'"'$key'":"'${beatmap[$key]}'",'
   postdata=$postdata"&"$key"="${beatmap[$key]}
done
beatstr="{"${beatstr:0:$(expr length $beatstr)-1}"}"

beatstr=$(urlencode $beatstr)
postdata=$postdata"&beat=$beatstr"


curl -s -S -X POST -d "$postdata" "http://$SERVICE_ADDR/nacos/v1/ns/instance"
while true
do
	curl -s -S -X PUT -d "$postdata" "http://$SERVICE_ADDR/nacos/v1/ns/instance/beat"
	echo ''
	sleep 3
done

由于alpine不支持数组格式,所以改为枚举参数变量的形式

sh?register_nacos_apline.sh

#!/bin/sh
#sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
#apk add curl
SERVICE_ADDR=127.0.0.1:8848
IP=127.0.0.1
PORT=9999
SERVICE_NAME=name
GROUP_NAME=DEFAULT_GROUP
USER=nacos
PASS=nacos

urlencode(){
	echo $1 | tr -d '\n' | od -An -tx1 | tr ' ' '%' | tr -d [:cntrl:]
}

postdata="serviceName="$SERVICE_NAME
postdata=$postdata"&groupName="$GROUP_NAME
postdata=$postdata"&username="$USER
postdata=$postdata"&password="$PASS
postdata=$postdata"&ip="$IP
postdata=$postdata"&port="$PORT
postdata=$postdata"&weight=1.0"
postdata=$postdata"&ephemera=true"
postdata=$postdata"&healthy=true"

beatstr='"serviceName":"'$SERVICE_NAME'",'
beatstr=$beatstr'"ip":"'$IP'",'
beatstr=$beatstr'"port":"'$PORT'",'
beatstr=$beatstr'"ephemera":"true"'
beatstr="{"$beatstr"}"

beatstr=$(urlencode $beatstr)
postdata=$postdata"&beat=$beatstr"


curl -s -S -X POST -d "$postdata" "http://$SERVICE_ADDR/nacos/v1/ns/instance"
while true
do
	curl -s -S -X PUT -d "$postdata" "http://$SERVICE_ADDR/nacos/v1/ns/instance/beat"
	echo ''
	sleep 3
done

参考资料:

解决在alpine下无法使用数组表达式的问题 - 简书

shell 下 urlencode/urldecode 编码/解码的方法 - Boblim - 博客园

shell中使用map_uxff的博客-CSDN博客_shell脚本map

【shell】shell获取函数字符串返回值_bible_reader的博客-CSDN博客_shell 返回字符串

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:04:54  更:2022-04-30 09:08:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:46:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码