como colocar variável no cabeçalho CURL usando o shell script?

0

Eu quero chamar uma API usando shellscript, mas não consigo colocar o cabeçalho corretamente ... o que está errado no meu script ... obrigado antecipadamente.

script de shell:

#!/bin/bash
curl -H "Authorization: Basic ABCDEFGHIJKLMNOPQRSTUVWXYZ" -H "Content-Type: application/xml" -X POST -i -d "" -o session.xml  http://a.b.c.d:xxxx/api/auth/

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

echo $session

set -xxx
curl -H "X-RestSvcSessionId: ${session}" -X GET  "http://a.b.c.d:xxxx/api/jobs"

saída:

<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>
    
por Tiger 27.02.2018 / 14:15

1 resposta

0

"session" contém um retorno de carro, que estraga sua solicitação de onda. Substitua o grep / head / cut nos backticks por:

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

e use o seguinte parâmetro de curl:

--cookie "X-RestSvcSessionId=$session"
    
por 27.02.2018 / 14:24