使用cURL的Cisco ACI身份验证不起作用

时间:2019-04-22 03:21:31

标签: curl postman cisco

我一直在阅读有关使用 cURL here Cisco ACI 自动化的信息,并尝试遵循相同的步骤。

不幸的是,该代码不适用于cURL。我收到以下错误。

C:\>curl -X POST -k https://x.x.x.x/api/aaaLogin.json -d '{"aaaUser":{"attributes":{"name":"user007","pwd":"password007"}}}'
{"totalCount":"1","imdata":[{"error":{"attributes":{"code":"400","text":"JSON parsing failed - incomplete attribute value at line: 1"}}}]}
C:\>

但是,当我使用Postman测试相同的代码时,它的工作就像一种魅力。 curl命令出了什么问题?

注意:在此示例中,我没有放入-c cookie.txt,因为即使出现错误,我也会遇到相同的错误。

所需的输出

获得正确的HTTP 200响应,而不是400错误请求..

2 个答案:

答案 0 :(得分:1)

您需要先登录:

curl -X POST -k https://APIC_IP_ADDRESS/api/aaaLogin.xml -d '<aaaUser name="USERNAME" pwd="PASSWORD"/>' -c cookie.txt

APIC控制器返回存储在cookie中的令牌。它将持续5分钟。您必须使用此cookie来运行以下任何 REST API

例如 REST API ,它创建一个新的Tenat,一个新的应用程序配置文件和一个新的EPG,如下所示:

curl -b cookie.txt -X POST -k https://APIC_IP_ADDRESS/api/node/mo/uni.xml -d '<polUni> <fvTenant name="TENANT-NAME" descr="TENANT-NAME-DESC" status=""> <fvAp name="APP-PROF-NAME">   <fvAEPg name="NEW-EPG-NAME" > </fvAEPg> </fvAp> </fvTenant> </polUni>' -c cookie.txt

答案 1 :(得分:0)

您需要转义双引号(“)

C:\>curl -X POST -k https://x.x.x.x/api/aaaLogin.json -d '{\"aaaUser\":{\"attributes\":{\"name\":\"user007\",\"pwd\":\"password007\"}}}'

实际上,您甚至可以只对用户名和密码使用双引号:

C:\>curl -X POST -k https://x.x.x.x/api/aaaLogin.json -d '{aaaUser:{attributes:{name:\"user007\",pwd:\"password007\"}}}'

您需要转义\“的原因是因为curl在构造和发送POST消息时会删除它们。这是来自whireshark的捕获:whireshark capture

参考:https://stackoverflow.com/a/15828662/147637