1.获取nacos配置
------不需要用户验证------
# 配置ID
nacos_filename=myproject_service.yml
# 配置分组
groupid=sit
# 租户信息,对应 Nacos 的命名空间ID字段
tenant_name=myproject
# 获取nacos配置
curl -X GET "http://NACOS_IP:NACOS_PORT/nacos/v1/cs/configs?dataId=${nacos_filename}&group=${groupid}&tenant=${tenant_name}" > ${nacos_filename}
------需要用户验证------
# nacos用户
nacos_username=username
# nacos登录密码
nacos_password=password
# 获取登录nacos的token
curl -X POST 'http://NACOS_IP:NACOS_PORT/nacos/v1/auth/login' -d "username=${nacos_username}&password=${nacos_password}" > accesstoken.txt
# 获取token值,需提前安装jq
access_token_str=$(jq -r '.accessToken' accesstoken.txt)
# 获取nacos配置
curl -X GET "http://NACOS_IP:NACOS_PORT/nacos/v1/cs/configs?accessToken=${access_token_str}&dataId=${nacos_filename}&group=${groupid}&tenant=${tenant_name}" > ${nacos_filename}
2.更新nacos配置文件
# nacos文件上传需要其他方式进行处理
# 读取上传的yml文件
content=$(cat ${update_files})
# 更新yml文件
# -d "content=${content}" 修改为: --data-urlencode "content=${content}" 解决&符号会截断的问题
# 对于&字符,它在Shell中通常用作后台运行命令的符号。因此,当Shell脚本看到&时,它可能会尝试在该位置断行或将命令放入后台运行,这会导致命令失败或行为异常。
curl -X POST 'http://NACOS_IP:NACOS_PORT/nacos/v1/cs/configs' \
-d "dataId=${update_files}" \
-d "group=${groupid}" \
-d "tenant=${tenant_name}" \
-d 'type=yaml' \
--data-urlencode "content=${content}"
3.参考资料
nacos官方open-api说明文档:
https://nacos.io/docs/v1/open-api/
https://nacos.io/docs/v2/guide/user/open-api/