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-timeoutborne l'établissement de la connexion,--max-timela durée totale (code 28 en cas de dépassement). --silentmasque aussi les messages d'erreur ; associez-le à--show-errorpour 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.