如何使用 shell 脚本将变量放入 CURL 标头中?

如何使用 shell 脚本将变量放入 CURL 标头中?

我想使用 shellscript 调用 API,但我无法正确放置标头...我的脚本出了什么问题...提前致谢。

外壳脚本:

#!/bin/bash
curl -H“授权:基本ABCDEFGHIJKLMNOPQRSTUVWXYZ”-H“内容类型:application/xml”-X POST -i -d“”-o session.xml http://abcd:xxxx/api/auth/

会话=`grep -i x-rest session.xml |头-1 |切 -d ' ' -f 2`

回显$会话

设置-xxx
curl -H "X-RestSvcSessionId: ${session}" -X GET "http://abcd:xxxx/api/jobs"

输出:

<pre>
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5475    0  5475    0     0  43457      0 --:--:-- --:--:-- --:--:-- 43800

OGIyMDUxYTctNjMzNC00MjhjLWJiOTEtZjQ2YmMwZGY1NmY3

 -X GET http://a.b.c.d:xxxx/api/jobsjMzNC00MjhjLWJiOTEtZjQ2YmMwZGY1NmY3
</pre>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request</h2>
<hr><p>HTTP Error 400. The request is badly formed.</p>
</BODY></HTML>

答案1

问题是如果你通过curlgrepheadtail++ 设置变量,那么你将得到一个末尾有新行你的变量。

要删除新行,请将最后一行设置curl$session

curl -H "X-RestSvcSessionId: ${session//[$'\t\r\n ']}" -X GET  "http://a.b.c.d:xxxx/api/jobs"

这将删除新行和选项卡(如果有)。

我有同样的错误:检查这里

答案2

“session”包含回车符,这会破坏您的卷曲请求。将反引号中的 grep/head/cut 替换为:

session=$(awk '/^X-RestSvcSessionId/ {print $2}' session.xml)

并使用以下curl参数:

--cookie "X-RestSvcSessionId=$session"

相关内容