Curl

De knowledge
Aller à la navigation Aller à la recherche

J'aime beaucoup curl. Avant j'étais fan de wget mais finalement curl y'a que ça de vrai!

Un des problème que j'ai rencontré avec cet outil somme toute simple c'est la possibilité de sauvegarder les résultats dans un fichier ET de récupérer simplement le code retour HTTP. Si on utilise le standard -i pour avoir l'en-tête et qu'on utilise -o pour envoyer le résultat dans un fichier on se retrouve avec le header dans le fichier de sortie. Moi c'etait un ZIP ça posait des problèmes.

J'ai demandé a mon ami copilot et il m'a fait découvrir l'option -w.

Le lui laisse prendre la suite. Il est plus sérieux que moi dans sa rédaction!

Utilisation de l'option -w avec curl

L'option -w (ou --write-out) de curl permet d'extraire des informations spécifiques sur la requête HTTP, comme le code de retour, le type de contenu, les temps de connexion, etc., sans affecter le fichier de sortie défini par -o.

Syntaxe de base

curl -s -o out/parse.zip -w "%{http_code}\n" -F "file=@in/exemple.pdf" 'https://example.com/upload'
  • -s : mode silencieux (supprime la barre de progression).
  • -o out/parse.zip : enregistre le corps de la réponse dans le fichier.
  • -w "%{http_code}\n" : affiche le code HTTP à la fin, sans l'inclure dans le fichier.

Variables disponibles avec -w

Voici quelques variables utiles que l'on peut inclure dans le format de sortie :

📄 Statut HTTP

  • %{http_code} : code de retour HTTP (ex. 200, 404)
  • %{response_code} : identique à http_code
  • %{exitcode} : code de sortie de curl

⏱️ Temps

  • %{time_total} : durée totale de la requête
  • %{time_connect} : temps pour établir la connexion
  • %{time_starttransfer} : temps jusqu’au premier octet reçu

📦 Transfert

  • %{size_download} : taille des données téléchargées
  • %{size_upload} : taille des données envoyées
  • %{speed_download} : vitesse de téléchargement

🌐 Réseau

  • %{remote_ip} : IP du serveur distant
  • %{remote_port} : port du serveur distant
  • %{ssl_verify_result} : résultat de la vérification SSL

🧾 En-têtes

  • %{content_type} : type MIME du contenu
  • %{redirect_url} : URL de redirection (si applicable)
  • %{url_effective} : URL finale après redirections

Exemple complet

curl -s -o out/parse.zip -w "Code HTTP: %{http_code}\nType: %{content_type}\nDurée: %{time_total}s\n" \
     -F "file=@in/PE.pdf" 'https://example.com/upload'

Astuce : rediriger la sortie -w dans un fichier séparé

curl -s -o out/parse.zip -w "%{http_code}\n" -F "file=@in/PE.pdf" 'https://example.com/upload' > out/status.log

Cela permet de garder le fichier téléchargé propre, tout en enregistrant les métadonnées dans un fichier à part.

Conclusion

L'option -w est idéale pour automatiser les traitements HTTP avec curl, en extrayant des informations utiles sans interférer avec le contenu téléchargé via -o.