Aller au contenu

curl

À quoi il sert

curl transfère des données vers ou depuis une URL. Il parle HTTP et HTTPS, mais aussi une vingtaine d'autres protocoles (FTP, SFTP, SMTP...). Dans un script, il sert surtout à interroger une API ou un point de santé (curl http://172.16.8.11:8000/sante), à télécharger un fichier ou à envoyer un signal de vie à un service de surveillance. Il repose sur la bibliothèque libcurl, utilisée par d'innombrables programmes. Ubuntu 24.04 fournit la version 8.5.0, Debian 13 la 8.14.1. Sa licence, dite curl license, est une licence permissive proche de MIT/X.

Quand le choisir

Pour tout appel HTTP depuis le shell : il est présent presque partout et son comportement est documenté en détail. wget convient mieux pour télécharger récursivement un site ou reprendre un gros téléchargement, et un client dans un vrai langage (Python et requests ou httpx) dès qu'il faut enchaîner plusieurs appels authentifiés et traiter leurs réponses.

Points d'attention

  • Par défaut, une réponse HTTP 404 ou 500 est un transfert réussi : curl rend 0. Dans un script, ajoutez --fail (code 22 pour une réponse 400 ou plus, sans afficher le corps) ou --fail-with-body, qui garde le corps pour journaliser le message d'erreur de l'API.
  • Sans délai, curl peut attendre indéfiniment une réponse : --connect-timeout borne l'établissement de la connexion, --max-time la durée totale (code 28 en cas de dépassement).
  • --silent masque aussi les messages d'erreur ; associez-le à --show-error pour garder le diagnostic sur la sortie d'erreur.
  • Un jeton passé par -H "Authorization: Bearer ..." est visible dans la liste des processus : lisez les en-têtes depuis un fichier (-H @fichier) ou une configuration (--config), protégés en lecture.
  • -k (--insecure) désactive la vérification du certificat TLS : jamais en production. Ajoutez plutôt l'autorité de certification interne avec --cacert.

Par où commencer

La leçon Tests et conditions du cours Bash pour l'automatisation, où verifier-sante interroge /sante avec --fail, puis Gérer les erreurs pour les outils qui ne signalent pas leurs échecs et Processus, parallélisme et délais pour les délais. Puis la page de manuel de curl, en particulier la liste des codes de sortie.