쉘 스크립트를 사용하여 CURL 헤더에 변수를 넣는 방법은 무엇입니까?

쉘 스크립트를 사용하여 CURL 헤더에 변수를 넣는 방법은 무엇입니까?

쉘스크립트를 사용하여 API를 호출하고 싶은데 헤더를 올바르게 넣을 수 없습니다. 스크립트에 문제가 있습니다. 미리 감사드립니다.

쉘 스크립트:

#!/bin/bash
컬 -H "권한 부여: BasicABCDEFGHIJKLMNOPQRSTUVWXYZ" -H "콘텐츠 유형: application/xml" -X POST -i -d "" -o session.xml http://abcd:xxxx/api/auth/

세션=`grep -i x-rest session.xml |head -1 |cut -d ' ' -f 2`

$세션을 에코합니다.

세트-xxx
컬 -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

문제는 curl, grep또는 ++를 head통해 변수를 설정하면tail마지막에 새로운 줄당신의 변수.

새 줄을 제거하려면 마지막 줄을 curl다음으로 설정하세요 $session.

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

그러면 새 행과 탭(있는 경우)이 제거됩니다.

나는 같은 오류가 있습니다 :여기에서 확인하세요

답변2

"세션"에는 컬 요청을 중단시키는 캐리지 리턴 문자가 포함되어 있습니다. 백틱의 grep/head/cut을 다음으로 바꾸십시오.

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

다음 컬 매개변수를 사용합니다.

--cookie "X-RestSvcSessionId=$session"

관련 정보