curl
est un utilitaire de ligne de commande pour 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 à l'aide de l'un des protocoles pris en charge, notamment HTTP, HTTPS, SCP, SFTP et FTP. curl
fournit un certain nombre d'options vous permettant de reprendre les transferts, de limiter la bande passante, la prise en charge du proxy, l'authentification des utilisateurs et bien plus encore.
Dans ce tutoriel, nous allons vous montrer comment utiliser l'outil curl à travers des exemples pratiques et des explications détaillées des options curl les plus courantes.
Installation de Curl #
Le package curl est préinstallé sur la plupart des distributions Linux actuelles.
Pour vérifier si le package Curl est installé sur votre système, ouvrez votre console, tapez curl
, et appuyez sur entrée. Si vous avez curl
installé, le système imprimera curl: try 'curl --help' or 'curl --manual' for more information
. Sinon, vous verrez quelque chose comme curl command not found
.
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 #
sudo apt update
sudo apt install curl
Installer Curl sur CentOS et Fedora #
sudo yum install curl
Comment utiliser Curl #
La syntaxe du curl
commande 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 dans la sortie standard.
Par exemple, pour récupérer le example.com
page d'accueil que vous exécuteriez :
curl example.com
La commande imprimera le code source de example.com
page d'accueil 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 sera par défaut HTTP
.
Enregistrer la sortie dans un fichier #
Pour enregistrer le résultat du curl
commande, utilisez soit la commande -o
ou -O
option.
Minuscule -o
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
-O
majuscule enregistre le fichier avec son nom de fichier 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 plusieurs -O
options, suivi de l'URL du fichier que vous souhaitez télécharger.
Dans l'exemple suivant, nous téléchargeons les fichiers iso Arch Linux et 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 le -C -
option. Ceci est utile si votre connexion tombe pendant le téléchargement d'un fichier volumineux, et au lieu de commencer le téléchargement à partir de zéro, vous pouvez continuer le précédent.
Par exemple, si vous téléchargez le fichier iso d'Ubuntu 18.04 à l'aide de la commande suivante :
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
et soudain votre connexion s'interrompt 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 deux-points contenant des informations telles que l'agent utilisateur, le type de contenu et l'encodage. Les en-têtes sont passés entre le client et le serveur avec la requête ou la réponse.
Utilisez le -I
option pour récupérer uniquement les en-têtes HTTP de la ressource spécifiée :
curl -I --http2 https://www.ubuntu.com/
Tester si un site Web prend en charge 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
avec le --http2
choix :
curl -I --http2 -s https://linuxize.com/ | grep HTTP
Le -s
l'option indique curl
pour s'exécuter en mode silencieux (silencieux) et masquer la jauge de progression et les messages d'erreur.
Si le serveur distant prend en charge HTTP/2, curl
imprime HTTP/2.0 200
:
HTTP/2 200
Sinon, la réponse est HTTP/1.1 200
:
HTTP/1.1 200 OK
Si vous avez la version curl 7.47.0
ou plus récent, vous n'avez pas besoin d'utiliser le --http2
car HTTP/2 est activé par défaut pour toutes les connexions HTTPS.
Suivre les redirections #
Par défaut, curl
ne suit pas les en-têtes HTTP Location.
Si vous essayez de récupérer la version autre que www de google.com
, vous remarquerez qu'au lieu d'obtenir la source de la page, vous serez redirigé vers la version www :
curl google.com
Le -L
l'option indique curl
pour suivre toute redirection jusqu'à ce qu'elle atteigne la destination finale :
curl -L google.com
Modifier le numéro d'agent utilisateur
Parfois, lors du téléchargement d'un fichier, le serveur distant peut être configuré pour bloquer l'agent utilisateur Curl ou pour renvoyer un contenu différent en fonction de l'appareil et du navigateur du visiteur.
Dans des situations comme celle-ci pour émuler un navigateur différent, utilisez le -A
option.
Par exemple, pour émuler Firefox 60, vous utiliserez :
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
Spécifiez un numéro de taux de transfert maximal
Le --limit-rate
L'option vous permet de limiter le taux de transfert de données. La valeur peut être exprimée en octets, kilooctets avec le k
suffixe, mégaoctets avec le m
suffixe et gigaoctets avec le g
suffixe.
Dans l'exemple suivant curl
téléchargera le binaire Go et limitera la vitesse de téléchargement à 1 Mo :
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
Cette option est utile pour empêcher le curl
consommant toute la bande passante disponible.
Transférer des fichiers via FTP #
Pour accéder à un serveur FTP protégé avec curl
, utilisez le -u
option et spécifiez le nom d'utilisateur et le mot de passe comme indiqué ci-dessous :
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Une fois connecté, la commande répertorie tous les fichiers et répertoires du répertoire personnel de l'utilisateur.
Vous pouvez télécharger un seul fichier depuis le 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 peut-être 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 de la demande d'une ressource avec curl
, aucun cookie n'est envoyé ou stocké.
Pour envoyer des cookies au serveur, utilisez le -b
switch suivi d'un nom de fichier contenant les cookies ou d'une chaîne.
Par exemple, pour télécharger le fichier rpm Oracle Java JDK jdk-10.0.2_linux-x64_bin.rpm
vous devrez transmettre 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
Utiliser des proxys #
curl
prend en charge différents types de proxys, notamment HTTP, HTTPS et SOCKS. Pour transférer des données via un serveur proxy, utilisez le -x
(--proxy
) suivi de l'URL du proxy.
La commande suivante télécharge la ressource spécifiée à l'aide d'un proxy sur 192.168.44.1
port 8888
:
curl -x 192.168.44.1:8888 http://linux.com/
Si le serveur proxy requiert une authentification, utilisez le -U
(--proxy-user
) suivi 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 illustrent le curl
le plus utilisé options et sont destinés à vous aider à comprendre comment le curl
travail de commande.
Pour plus d'informations sur curl
visitez la page de documentation Curl.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.