【nexus】用curl调用服务API对输出json的处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【nexus】用curl调用服务API对输出json的处理相关的知识,希望对你有一定的参考价值。

参考技术A # systemctl status nexus

# cat /etc/systemd/system/nexus.service

# curl -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks

# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks

# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | jq .items

# yum -y install jq

# yum info jq

# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | jq .items | awk -F '"' ' for(i=1;i<=NF;i+=2) $i="" print $0 '

# curl -s -u admin:admin123 -X GET http://192.168.1.101:8081/service/rest/v1/tasks | awk -F '"' ' for(i=1;i<=NF;i+=2) $i="" print $0 '

awk默认是以行为单位处理文本的,对文本中的每一行都执行后面 " " 中的语句。

awk中的两个术语:

记录(默认就是文本的每一行)

字段 (默认就是每个记录中由空格或TAB分隔的字符串)

$0就表示一个记录,$1表示记录中的第一个字段

一般 print $0 就是打印整行内容($0前面不需要反斜杠),print $1表示只打印每行第一个字段。

-F '"' 指定 分界符为 “

for(i=1;i<=NF;i+=2)  $i=""

NF 为最后一列,对于匹配到的奇数列,给其赋值为空 "",最终究只有以 " 为分界符的偶数列有内容输出了

print $0 打印满足前面条件的所有行

最终效果是只打印出双引号内容中的字符串,相当于实现了去掉 json中的 各种其他字符。

玩转Linux 文件处理工具 awk

https://segmentfault.com/a/1190000020178452

Linux生产环境上,最常用的一套“AWK“技巧

https://segmentfault.com/a/1190000021462472?utm_source=sf-related

通过curl调用 k8s service api 无法修改 spec.port

由于使用模板替换生成的 yaml 文件,端口号deployment service 是一致的,但是在发布时不能确定jar应用的端口号(真不配合,没办法)

造成要修改端口号,deployment 替换模板后直接调用 curl PUT 可以更新,但是service 出现问题,

前期是删除sevice,造成 nignx 或 其他服务调用,出现服务无法识别, 解决办法:

1. 强制规范 service port全部为80端口, targetport 是服务端口,targetport 可以通过curl 修改。

2. curl 调用 service api  patch方法,修改ports.name 名字,在修改端口号

 

 

 

 

 

 

使用更新的yaml文件
[root@harbor ~]# cat nginx-service.yaml 
spec:
  ports:
  - port: 81
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort

 

 



curl --cacert /data/deployment_git/ca.pem --cert /data/deployment_git/admin.pem --key /data/deployment_git/admin-key.pem --insecure -H \'Content-Type: application/strategic-merge-patch+json\'  -X PATCH --data \' {"spec":{"ports":[{"name":"nginx","port":80,"protocol":"UDP","targetPort":8080}]}}\' \'https://172.16.230.51:6443/api/v1/namespaces/default/services/nginx\'

注意 name: ”nginx1” 不能相同,否则包冲突错误

curl --cacert /data/deployment_git/ca.pem --cert /data/deployment_git/admin.pem --key /data/deployment_git/admin-key.pem --insecure -H \'Content-Type: application/stategic-merge-patch+json\'  -X PATCH --data \' {"spec":{"ports":[{"name":"nginx1","port":81,"protocol":"UDP","targetPort":80}]}}\' \'https://172.16.230.51:6443/api/v1/namespaces/default/services/nginx\'


未进行测试。。。。。。 

 

以上是关于【nexus】用curl调用服务API对输出json的处理的主要内容,如果未能解决你的问题,请参考以下文章

appscan 对api的手工检测

使用授权密钥和秘密的 PHP Curl API GET 调用

使用 Curl 调用 Slim CORS Web 服务

通过curl调用 k8s service api 无法修改 spec.port

为 Nexus 容器启用 HTTPS 后,CURL 上传/下载错误并显示以下错误: curl: 51 SSL: no alternative certificate

curl的Python版本--输出