1382 votes

Obtenir curl pour afficher le code de statut HTTP?

Je suis en train d'utiliser curl en ligne de commande sur Linux pour envoyer des requêtes HTTP. Les corps de réponse sont affichés sur la sortie standard, ce qui est bien, mais je ne vois pas sur le manuel comment obtenir curl pour afficher le code d'état HTTP de la réponse (404, 403, etc). Est-ce possible ?

0 votes

Pour ma part, je peux voir dans le manuel comment obtenir le code de statut HTTP, mais l'option -w ne fonctionne pas. J'ai signalé le bug à Apple.

71 votes

Le drapeau -i, comme dans curl -i https://www.example.com/, est probablement ce que vous voulez, selon superuser.com/a/514798/190188

0 votes

Pourquoi ne pas simplement quelque chose comme curl -IL http://www.example.com | grep "^HTTP\/" ?

3voto

sakumatto Points 31

L'OP veut connaître le code d'état. Souvent, lors du téléchargement d'un fichier, vous voulez également avoir une idée de sa taille, c'est pourquoi j'utilise d'abord curl pour afficher le code d'état et la taille du fichier, puis je désactive la verbeuse et redirige le fichier vers l'endroit et le nom que je veux :

curl -R -s -S -w  "\nhttp: %{http_code} %{size_download}\n" -o /Users/myfiles/the_local_name.html http://archive.onweb.com/the_online_name.html

Ensuite, j'attends la fin de curl

wait ${!}

avant de lancer la commande suivante. Ce qui précède, lorsqu'il est utilisé dans un script de nombreuses commandes comme ci-dessus, donne une belle réponse comme :

http: 200 42824

http: 200 34728

http: 200 35452

Veuillez noter que -o dans curl doit être suivi du chemin complet du fichier + nom du fichier. Cela vous permet ainsi de sauvegarder les fichiers dans une structure de nom sensée lorsque vous les téléchargez avec curl. Notez également que -s et -S utilisés ensemble réduisent la sortie mais affichent les erreurs. Notez également que -R tente de définir la date et l'heure du fichier sur celles du fichier web.

Ma réponse est basée sur ce que @pvandenberk a suggéré initialement, mais en plus elle enregistre réellement le fichier quelque part, au lieu de simplement le diriger vers /dev/null.

-1voto

Nitish Kumar Points 1
$ curl -kv https://www.example.org 2>&1 | grep -i 'HTTP/1.1 ' | awk '{print $3}'| sed -e 's/^[ \t]*//'
  • 2>&1: l'erreur est stockée dans la sortie pour l'analyse
  • grep: filtre la ligne de code de réponse de la sortie
  • awk: filtre le code de réponse de la ligne de code de réponse
  • sed: supprime les espaces blancs en début de ligne

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X