Command Curl sous Linux avec des exemples

Command Curl sous Linux avec des exemples

curl est un utilitaire en ligne de commande permettant de transférer des données depuis ou vers un serveur conçu pour fonctionner sans interaction de l’utilisateur. Avec curl, vous pouvez télécharger ou charger des données en utilisant l’un des protocoles pris en charge, notamment HTTP, HTTPS, SCP, SFTP et FTP. curl offre un certain nombre d’options vous permettant de reprendre les transferts, de limiter la bande passante, de prendre en charge les proxy, d’authentifier les utilisateurs, et bien plus encore.

Dans ce tutoriel, nous vous montrerons comment utiliser l’outil curl à travers des exemples pratiques et des explications détaillées des options de curl les plus courantes.

Installation de curl

Le paquet curl est préinstallé sur la plupart des distributions Linux actuelles.

Pour vérifier si le paquet Curl est installé sur votre système, ouvrez votre console, tapez curl et appuyez sur la touche Entrée. Si vous avez installé curl, le système imprimera curl : essayez “curl –help” ou “curl –manual” pour plus d’informations. Sinon, vous verrez quelque chose comme “curl command not found” (commande curl non trouvée).

Si curl n’est pas installé, vous pouvez facilement l’installer en utilisant le gestionnaire de paquets de votre distribution.

Installer Curl sur Ubuntu et Debian

La syntaxe de la commande curl est la suivante :

curl [options] [URL...]

Dans sa forme la plus simple, lorsqu’il est invoqué sans aucune option, curl affiche la ressource spécifiée sur la sortie standard.

Par exemple, pour récupérer la page d’accueil de example.com, vous devez exécuter:

$ curl example.com

La commande permet d’imprimer le code source de la page d’accueil de example.com dans la fenêtre de votre terminal.

Si aucun protocole n’est spécifié, curl essaie de deviner le protocole que vous voulez utiliser, et il s’agira par défaut de HTTP.

Enregistrer la sortie dans un fichier

Pour enregistrer le résultat de la commande curl, utilisez l’option -o ou -O.

L’option -o en minuscules enregistre le fichier avec un nom de fichier prédéfini, qui dans l’exemple ci-dessous est vue-v2.6.10.js :

$ curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Majuscule -O enregistre le fichier avec son nom d’origine :

$ curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Télécharger plusieurs fichiers

Pour télécharger plusieurs fichiers à la fois, utilisez les options -O multiples, suivies de l’URL du fichier que vous souhaitez télécharger.

Dans l’exemple suivant, nous téléchargeons les fichiers iso d’Arch Linux et de Debian :

$ curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso  \
$     -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

Reprendre un téléchargement

Vous pouvez reprendre un téléchargement en utilisant l’option -C –. Cette option est utile si votre connexion est interrompue pendant le téléchargement d’un gros fichier, et au lieu de recommencer le téléchargement à zéro, vous pouvez continuer le précédent.

Par exemple, si vous téléchargez le fichier iso Ubuntu 18.04 en utilisant la commande suivante :

$ curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

et que soudainement votre connexion tombe, vous pouvez reprendre le téléchargement avec :

$ curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Obtenir les en-têtes HTTP d’une URL

Les en-têtes HTTP sont des paires clé-valeur séparées par des points contenant des informations telles que l’agent utilisateur, le type de contenu et le codage. Les en-têtes sont transmis entre le client et le serveur avec la requête ou la réponse.

Utilisez l’option -I pour ne récupérer que les en-têtes HTTP de la ressource spécifiée :

$ curl -I --http2 https://www.ubuntu.com/

Tester si un site web supporte HTTP/2

Pour vérifier si une URL particulière prend en charge le nouveau protocole HTTP/2, récupérez les en-têtes HTTP avec -I et l’option –http2 :

$ curl -I --http2 -s https://linuxize.com/ | grep HTTP

L’option -s indique au curl de fonctionner en mode silencieux (quiet) et de cacher le compteur de progression et les messages d’erreur.
Si le serveur distant supporte HTTP/2, curl imprime HTTP/2.0 200 :

Output
HTTP/2 200

Sinon, la réponse est HTTP/1.1 200 :

Output
HTTP/1.1 200 OK

Si vous avez la version 7.47.0 ou plus récente de curl, vous n’avez pas besoin d’utiliser l’option –http2 car HTTP/2 est activé par défaut pour toutes les connexions HTTPS.

Suivez les redirections

Par défaut, le curl ne suit pas les en-têtes HTTP Location.

Si vous essayez de récupérer la version non-www de google.com, vous remarquerez qu’au lieu d’obtenir le source de la page, vous serez redirigé vers la version www :

$ curl google.com

L’option -L indique au curl de suivre toute redirection jusqu’à ce qu’il atteigne sa destination finale :

$ curl -L google.com

Changer l’agent utilisateur

Parfois, lors du téléchargement d’un fichier, le serveur distant peut être configuré pour bloquer le Curl User-Agent ou pour renvoyer des contenus différents selon l’appareil et le navigateur du visiteur.

Dans de telles situations, pour émuler un navigateur différent, utilisez l’option -A.

Par exemple, pour émuler Firefox 60, vous utiliserez l’option -A :

$ curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

Indiquer un taux de transfert maximum

L’option –limit-rate vous permet de limiter le taux de transfert des données. La valeur peut être exprimée en octets, kilo-octets avec le suffixe k, méga-octets avec le suffixe m, et giga-octets avec le suffixe g.

Dans l’exemple suivant, curl téléchargera le binaire Go et limitera la vitesse de téléchargement à 1 mb :

$ curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

Cette option est utile pour éviter que le curl ne consomme toute la largeur de bande disponible.

Transfert de fichiers par FTP

Pour accéder à un serveur FTP protégé avec curl, utilisez l’option -u et indiquez le nom d’utilisateur et le mot de passe comme indiqué ci-dessous :

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.co

Une fois connecté, la commande liste tous les fichiers et répertoires du répertoire d’origine de l’utilisateur.

Vous pouvez télécharger un seul fichier à partir du serveur FTP en utilisant la syntaxe suivante :

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

Pour télécharger un fichier sur le serveur FTP, utilisez le -T suivi du nom du fichier que vous souhaitez télécharger :

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Envoyer des cookies

Parfois, vous devrez faire une requête HTTP avec des cookies spécifiques pour accéder à une ressource distante ou pour déboguer un problème.

Par défaut, lors d’une demande de ressource avec curl, aucun cookie n’est envoyé ou stocké.

Pour envoyer des cookies au serveur, utilisez le commutateur -b suivi d’un nom de fichier contenant les cookies ou une chaîne de caractères.

Par exemple, pour télécharger le fichier Oracle Java JDK rpm jdk-10.0.2_linux-x64_bin.rpm, vous devrez passer un cookie nommé oraclelicense avec la valeur a :

$ curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

Utilisation des procurations

curl supporte différents types de proxies, dont HTTP, HTTPS et SOCKS. Pour transférer des données via un serveur proxy, utilisez l’option -x (–proxy), suivie de l’URL du proxy.

La commande suivante permet de télécharger la ressource spécifiée en utilisant un proxy sur le port 8888 de 192.168.44.1 :

$ curl -x 192.168.44.1:8888 http://linux.com/

Si le serveur proxy nécessite une authentification, utilisez l’option -U (–proxy-user) suivie du nom d’utilisateur et du mot de passe séparés par deux points (user:password) :

$ curl -U username:password -x 192.168.44.1:8888 http://linux.com/

Conclusion

curl est un outil en ligne de commande qui vous permet de transférer des données depuis ou vers un hôte distant. Il est utile pour résoudre les problèmes, télécharger des fichiers, etc.

Les exemples présentés dans ce tutoriel sont simples, mais démontrent les options de curl les plus utilisées et sont destinés à vous aider à comprendre comment fonctionne la commande curl.

Pour plus d’informations sur le curl, visitez la page de documentation du curl.

Si vous avez des questions ou des remarques, n’hésitez pas à laisser un commentaire.