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?
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"
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'`"