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 ?
Réponses
Trop de publicités?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.
$ 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
- Réponses précédentes
- Plus de réponses
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 danscurl -i https://www.example.com/
, est probablement ce que vous voulez, selon superuser.com/a/514798/1901880 votes
Pourquoi ne pas simplement quelque chose comme
curl -IL http://www.example.com | grep "^HTTP\/"
?11 votes
Ne pas oublier à ton futur toi-même : la réponse que tu veux est probablement celle de Cyril David (actuellement en 4ème position)