我使用cURL连接到远程主机。我的一些命令执行得很好(比如通过POST进行身份验证,通过GET提取信息)。当我试图使用POST添加有关内容长度的信息时,我遇到了一个奇怪的错误。这是我的语法;
curl -k -i -b sessionid -X POST https://hostname/BeyondTrust/api/public/v3/Workgroups/apiTest/Assets?AssetName=string&DnsName=string&DomainName=string -H "Content-Type: application/json" -H "Authorization: PS-Auth key=b8e1...2c27; runas=userName; pwd=[password]" -d ""
这是我的输出;
[1] 58164
[2] 58165
-bash: -H: command not found
[2]+ Done DnsName=string
HTTP/1.1 411 Length Required
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 27 Oct 2017 14:29:12 GMT
Connection: close
Content-Length: 344
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Length Required</h2>
<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>
</BODY></HTML>
我已经研究过了,这显然是个常见的问题。-d ""
没有修复,并且已经在头中尝试过--ignore-content-length
和Content-Length: 0
,但是我仍然有同样的问题。有人能给我指明正确的方向吗?
发布于 2017-10-27 17:44:06
您需要引用URL,因为它包含一些特殊的shell字符。
这个输出告诉您出了什么问题:
[1] 58164
[2] 58165
-bash: -H: command not found
[2]+ Done DnsName=string
您的命令被分割成多个作业,并由于&
的查询字符串中的而导致一些错误。
将URL放在双引号中,"
将解决这个问题。
curl -k -i -b sessionid \
-X POST \
"https://hostname/BeyondTrust/api/public/v3/Workgroups/apiTest/Assets?AssetName=string&DnsName=string&DomainName=string"
这样,您的URL将被正确地解释,并且shell不会尝试在背景中启动它。
https://stackoverflow.com/questions/46977634
复制相似问题