Est-il possible de demander à cURL de supprimer la sortie du corps de la réponse?
Dans mon cas, le corps de la réponse est une page HTML, qui déborde du tampon CLI, ce qui rend difficile la recherche des informations pertinentes. Je souhaite examiner les autres parties de la sortie, telles que le code de réponse HTTP, les en-têtes, le fichier e.t.c. - tout sauf le HTML actuel.
Vous pouvez utiliser le -o
commutateur et null
pseudo-fichier:
curl -s -o /dev/null -v http://google.com
curl -s -o nul -v http://google.com
Voici un moyen de supprimer toutes les sorties curl et les en-têtes, avec la possibilité de toujours afficher les erreurs si elles se produisent. Utile pour les tâches cron ou les tests automatisés.
Pour supprimer toutes les sorties:
curl --silent --output /dev/null http://example.com
Pour supprimer la sortie mais toujours afficher les erreurs si elles se produisent:
curl --silent --output /dev/null --show-error --fail http://example.com
Pour supprimer toutes les sorties:
curl --silent --output nul http://example.com
Pour supprimer la sortie mais toujours afficher les erreurs si elles se produisent:
curl --silent --output nul --show-error --fail http://example.com
--silent
supprime les statistiques de téléchargement en cours (mais affiche toujours la sortie HTML)--output /dev/null
cache la sortie réussie--show-error
affiche les erreurs, même lorsque le mode silent
est activé--fail
générera une erreur si la réponse HTTP est un code d'erreur (404, 500, etc.) au lieu de simples erreurs DNS/TCP.
UPDATE: Je réalise que l'auteur original voulait inspecter les en-têtes et le code de réponse d'une demande plutôt que de réduire au silence tout. Voir réponse de samael pour des détails sur la façon de le faire.
Lorsque vous souhaitez afficher les en-têtes tout en masquant le corps de la réponse, vous devez utiliser:
curl -sIXGET http://somedomain.com/your/url
J'avais utilisé curl -I http://somedomain.com/your/url
pour afficher uniquement les en-têtes de réponse. Le problème avec cela, c’est que la requête utilise la méthode HEAD
, ce qui n’est pas utile lorsque vous souhaitez tester un appel d’API ne répondant qu’à un GET
demande. C'est ce que le -X GET
est pour, il change la demande en un GET
.
Donc, en résumé:
-s
masque les barres de progression de la sortie (particulièrement utile lors du transfert vers un autre programme)-I
montre les en-têtes (mais fait une requête HEAD
)-XGET
reconvertit la requête en requête GET
voir: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/