Llinux上用curl模拟登陆并调用接口

Linux使用curl模拟登录与调用Nexus3接口
本文介绍了如何在Linux环境下利用curl模拟登录Nexus3仓库,并进行只读模式设置的接口调用。在初始尝试失败后,通过分析发现需要处理cookie以实现认证,最终成功实现通过脚本保存并携带cookie执行接口调用。

 最近在玩nexus3仓库。需要对nexus仓库进行定时自动备份。由于nexus3仓库在备份的过程中是不可以进行写操作的,所以在执行备份的时候将nexus3设置为只读模式。通过 "F12"抓包到相关接口以及参数之后,通过curl调用接口将neuxs3仓库设置为只读模式。

 在第一次调用设置只读模式的接口后,返回如下结果,调用失败,需要进行用户认证才能调用,不然什么阿猫阿狗都能调用你的接口岂不是乱套了。

{
  "tid": 30,
  "action": "coreui_DatabaseFreeze",
  "method": "update",
  "result": {
    "message": "User is not permitted: nexus:*",
    "authenticationRequired": false,
    "success": false,
    "data": []
  },
  "type": "rpc"
}
 既然如此,那就先模拟登陆吧。在网上搜索了下,curl在linux上的登陆命令为:
curl -d "username=YWRtaW4%3D&password=YWRtaW4xMjM%3D" "http://10.25.81.60:8081/service/rapture/session"
 执行之后,在执行下面的命令以post调用接口调用接口

curl -i -X POST -H "'Content-type':'application/json'" -d '{"action": "coreui_DatabaseFreeze","method": "update","data": [{"frozen": false}],"type": "rpc","tid": 30}' http://10.25.81.60:8081/service/extdirect
结果发现没有生效,于是我在本地用postman发送对应的登陆以及调用接口的http请求,发现可以成功的启动nexus3的只读模式。

  最后想了下,postman会自己保存cookie等东西,而我在linux中并不会自动保存cookie,我执行的那两条curl命令实际上是没有联系的。

如果要成功登陆,必须通过curl命令将登录到的cookie保存下载,然后调用接口的时候将cookie带上去。修改之后的脚本如下:

#!/bin/bash

loginStr='curl -c cookies -d "username=YWRtaW4%3D&password=YWRtaW4xMjM%3D"  http://10.25.81.60:8081/service/rapture/session

freezeStr="curl -i -X POST -b cookies -H "'Content-type':'application/json'" -d '{"action": "coreui_DatabaseFreeze","method": "update","data": [{"frozen": false}],"type": "rpc","tid": 30}' http://10.25.81.60:8081/service/extdirect"

eval $loginStr

eval $freezeStr



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值