web-dev-qa-db-fra.com

Commande de boucle multiligne

J'essaie de modifier une demande de boucle qui a été capturée avec Google Chrome Dev Tools.

Voici à quoi ressemble la commande

curl "http://WEBSITE" -H "Host: WEBSITE" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "Content-Type: multipart/form-data; boundary=---------------------------1184875127259" --data-binary "-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM1"""^

"FORM1DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM2"""^

"FORM2DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM3"""^

"FORM3DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""embed"""^

"true"^
"---------------------------1184875127259--"^
""

Form# est le nom du formulaire et Form#Data sont les données que j'ai soumises dans les formulaires.

Comment pourrais-je faire de cette requête une boucle sur une seule ligne que je peux simplement copier dans ma ligne de commande et lui faire faire la même chose que mon navigateur?

17
Bijan

Utilisez le \ caractère d'échappement pour les entrées multilignes

curl "http://WEBSITE" -H "Host: WEBSITE"\
-H "Accept: text/html,application/xhtml+xml\
,application/xml;q=0.9,*/*;q=0.8" 
25
AmitM

REMARQUE: faites attention à la tendance à indenter sur plusieurs commandes de ligne, car cela incorporera des espaces et vissera la commande curl. la commande sed remplace les espaces intégrés dans les variables par la chaîne% 20 afin que les espaces puissent être utilisés intégrés dans les chaînes que vous passez en tant que variables

messageout="The rain in Spain stays mainly in the plains"
summaryout="This is a test record"
alertnameout="Test Alert"


curl -v -silent request POST "URL.com?\
summary=`echo $summaryout | sed -e 's/ /%20/g'`&\
alertname=`echo $alertnameout | sed -e 's/ /%20/g'`&\
message=`echo $messageout | sed -e 's/ /%20/g'`"
1
h. samm