logo

Commande Curl sous Linux avec des exemples

La commande Linux curl est utilisée pour télécharger ou télécharger des données sur un serveur via des protocoles pris en charge tels que HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, etc. Il s'agit d'un utilitaire distant, il fonctionne donc sans interaction de l'utilisateur.

Le transfert de données d'un endroit à un autre est l'une des tâches vitales et les plus utilisées d'un système informatique. Cependant, il existe de nombreux outils GUI disponibles pour le transfert de données. Mais lorsque l’on travaille en ligne de commande, cela devient un peu compliqué. L'utilitaire curl nous permet de transférer des données via la ligne de commande.

Curl est un outil de ligne de commande pour obtenir et envoyer des données telles que des fichiers avec une syntaxe URL. Il prend en charge tous les protocoles pris en charge par libcurl car il utilise libcurl. Curl fournit son support pour HTTPS et implémente la vérification du certificat SSL lorsqu'un protocole sécurisé est mentionné par défaut, comme HTTPS. Curl apportera le certificat du serveur distant et vérifiera le certificat CA pour sauvegarder la validité du serveur distant et garantir que le serveur distant est celui qu'il demande lorsque curl se lie à un serveur distant par HTTPS.

Il existe de nombreuses options pour définir un certificat CA, comme --capath et --cacert . L'option, c'est-à-dire --cacert, peut être utilisée pour spécifier l'emplacement du fichier du magasin de certificats CA. Si un fichier de certificat CA n'est pas disponible sur la plate-forme Windows, curl recherchera le nom du fichier de certificat CA « curl-ca-bundle.crt » dans l'ordre ci-dessous :

  • Répertoire dans lequel le programme curl est présent.
  • Répertoire de travail actuel.
  • Répertoire système (Windows).
  • Répertoire (Windows).
  • Les répertoires sont mentionnés dans les variables d'environnement %PATH%.

Curl donnera un message d'erreur lorsque le serveur distant utilise un certificat auto-signé ou lorsque le certificat du serveur distant n'est pas signé via une autorité de certification mentionnée dans le fichier de certificat de l'autorité de certification. L'option --insecure ou -k peut être utilisée pour ignorer la vérification du certificat. Le certificat d'autorité de certification distant peut également être inclus dans le fichier de magasin de certificats d'autorité de certification si le serveur distant est valide.

Curl fournit une multitude d'astuces utiles telles que la reprise du transfert de fichiers, les cookies, les connexions SSL, la publication HTTP, le téléchargement FTP, l'authentification des utilisateurs, la prise en charge des proxy, etc. Curl est mécanisé par libcurl pour chaque aspect lié au transfert.

Qu’est-ce que libcurl ?

libcurl est une bibliothèque de transfert d'URL gratuite côté client. Il prend en charge SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, le tunneling proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT et les cookies. La bibliothèque prend également en charge l'authentification utilisateur et mot de passe, les proxys, LDAPS, les certificats HTTPS, le téléchargement basé sur un formulaire HTTP, le téléchargement FTP, la reprise du transfert de fichiers, TFTP, Telnet, SFTP et le schéma d'URL de fichier.

libcurl est compact. Il crée et fonctionne de manière identique sur plusieurs plates-formes, notamment Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP. -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS et AIX.

La bibliothèque libcurl est compatible IPv6, thread-safe et gratuite. Des liaisons sont également disponibles pour plus de 50 langages, dont Python, PHP, Java et C/C++.
La bibliothèque libcurl prend en charge SChannel, gskit sur IBM i, NSS, mbed TLS, GnuTLS sur Windows, Secure Trasport sur iOS et macOS, TLS/SSL via OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl et Boringssl.

Syntaxe:

La syntaxe de base pour utiliser curl est la suivante :

 curl [options] [URL...] 

D'après la syntaxe ci-dessus,

URL :

La syntaxe de l'URL est une URL générale dépendante du protocole. Nous pouvons spécifier plusieurs URL comme suit :

 http://site.{one,two,three}.com 

Possibilités :

La commande curl prend en charge les options de ligne de commande suivantes :

--abstract-unix-socket : Il est utilisé pour se connecter via un socket de domaine Unix abstrait au lieu d'un réseau.

--anyauth : Il est utilisé pour commander curl pour authentifier la méthode par elle-même afin d'utiliser la méthode la plus sécurisée. Cet utilitaire est un utilitaire facultatif « --basic, --digest, --ntlm et négocier », qui est utilisé pour définir une méthode d'authentification spécifique.

-a, --append : Il est utilisé pour télécharger des fichiers. Il ajoute le fichier plutôt que de l'écraser. Si le fichier donné n'existe pas sur le serveur, il en créera un.

combien d'onces font 10 millilitres

--basique: Il spécifie l'utilisation de l'authentification de base HTTP. C'est l'option par défaut de la commande curl. Ceci est utile pour remplacer les paramètres précédents.

--cacert : Il est spécifié pour utiliser le fichier de certificat particulier pour vérifier l'homologue. Les fichiers peuvent avoir plusieurs certificats CA. Le format standard des certificats est PEM, tous les certificats doivent donc y figurer.

--capath : Il est spécifié pour utiliser le répertoire particulier pour vérifier l'homologue. Nous pouvons spécifier plusieurs chemins en les séparant par deux points (:) tels que « chemin : chemin2:chemin3 ». Le format standard des certificats est PEM, tous les certificats doivent donc y figurer.

--statut-cert : Il est utilisé pour vérifier l'état du certificat du serveur. Il utilise la demande de statut de certificat ou le TLS d'agrafage OCSP.

--cert-type : Il spécifie le type de certificat curl fourni. Ces certificats peuvent être au format PEM, DER et ENG. La valeur par défaut est PEM. Si elle est spécifiée plusieurs fois, la dernière valeur sera prise par le curl.

-E, --cert : Il est spécifié pour l'utilisation du fichier de certificat client lors de l'obtention d'un fichier via l'un des protocoles SSL tels que HTTPS, FTPS, etc.

--chiffres : Il est utilisé pour sélectionner les chiffrements à utiliser dans la connexion.

--compressé-ssh : Il est utilisé pour activer la compression SSH intégrée. Cette option sera considérée comme une demande du serveur, le serveur pourra donc l'accepter ou non.

--comprimé: Il est utilisé pour demander une réponse compressée à l'aide des algorithmes curl et enregistre le document non compressé. Cette option enverra un rapport pour l'encodage curl non pris en charge.

-K, --config : Il est utilisé pour décrire un fichier texte permettant de lire les arguments curl. Le curl utilisera les arguments de ligne de commande du fichier texte.

--connect-timeout : Il est utilisé pour spécifier le temps maximum en secondes pour le délai d'expiration de la connexion curl.

--se connecter à : Il est utilisé pour créer une requête vers la paire hôte/port donnée ; sinon, il se connectera à la paire suivante. Cette option est un outil pratique pour effectuer des requêtes directes sur un serveur spécifique.

-C, --continuer-à : Il est utilisé pour continuer ou reprendre un transfert de fichier précédent au décalage donné.

-c, --cookie-jar : Il est utilisé pour spécifier un fichier particulier dans lequel nous souhaitons écrire tous les cookies après une opération réussie.

-b, --cookie : Il est utilisé pour transmettre les données au serveur HTTP dans l'en-tête Cookie.

--create-répertoires : Il est utilisé en conjonction avec le '-o? option, cela créera la hiérarchie de répertoires locaux requise.

--crlf (FTP-SMTP) : Il est utilisé pour convertir LF en CRLF lors du téléchargement. C'est un outil pratique pour MVS (OS/390).

--fichiercrl : Il permet de préciser (au format PEM) une liste de certificats révoqués.

--data-ascii : C'est un alias pour le ?-d? option.

--délégation : Il est utilisé pour définir LEVEL pour reconnaître au serveur ce qu'il est autorisé à déléguer en ce qui concerne les informations d'identification de l'utilisateur.

--digérer: Il est utilisé pour activer l'authentification HTTP Digest.

-q, --disable : S'il est utilisé comme premier argument, il ignorera le fichier de configuration curlrc.

--interface-dns : Il est utilisé pour accuser réception du serveur pour envoyer les requêtes DNS sortantes.

--serveurs-dns : Il est utilisé pour spécifier les serveurs DNS au lieu des serveurs par défaut.

-f, --échec : Il est utilisé pour faire échouer curl silencieusement en cas d'erreurs de serveur.

-F, --forme : Il est utilisé pour émuler un formulaire rempli soumis par l'utilisateur.

-P, --port-ftp : Il est utilisé pour inverser les rôles d'écoute par défaut lors de la connexion via FTP.

--ftp-ssl-ccc-mode : Il est utilisé pour définir le mode CCC.

-G, --obtenir : Il est utilisé pour spécifier des données avec ?-d? option à utiliser dans une requête HTTP GET au lieu d’une requête POST.

-h, --aide : Il est utilisé pour afficher le manuel d'aide contenant une brève description des options d'utilisation et de support.

-0, --http1.0 : Il est spécifié pour utiliser la version HTTP 1.0.

--ignore-content-length : Il est utilisé pour ignorer l’en-tête Content-Length.

-j'inclus: Il est utilisé pour inclure les en-têtes de réponses HTTP.

-4, --ipv4 : Il est utilisé pour résoudre les noms en adresses IPv4.

-6, --ipv6 : Il est utilisé pour résoudre les noms en adresses IPv6.

Protocoles de curl

Curl prend en charge plusieurs protocoles :

    DICT :Cela nous permet de rechercher des mots avec uniquement des dictionnaires.FTP(S) :Curl prend en charge le protocole FTP en utilisant de nombreux leviers et ajustements. Avec ou sans TLS.DÉPOSER:Cela nous permet d'écrire et de lire le fichier local. Curl ne permet pas d'accéder à distance au fichier://URL, mais il fonctionnera lorsqu'il sera actif sur Microsoft Windows avec l'approche UNC native.GOPHER(S) :Il récupère les fichiers.HTTP(S) :Curl prend en charge HTTP en utilisant de nombreuses variantes et options. Il peut parler des versions HTTP 0.9, 1.0, 1.1, 2 et 3 en fonction de la ligne de commande précise et des options de construction.IMAP(S) :Curl télécharge les e-mails pour nous avec le protocole de lecture de courrier. Avec ou sans TLS.LDAP(S) :Curl peut implémenter la recherche dans le répertoire pour nous avec ou sans utiliser TLS.MQTT :Curl prend en charge la version 3 de MQTT. Le téléchargement sur MQTT est le même que 's'abonner' à n'importe quel sujet, et la publication/le téléchargement est la même chose que 'publier' sur n'importe quel sujet. Sur TLS, MQTT n'est pas pris en charge.POP3(S) :Le téléchargement via un serveur pop3 représente la réception de courrier sans ou avec TLS.RTMP(S) :Le RTMP ou Realtime Messaging Protocol est principalement utilisé pour le streaming multimédia sur serveur.RTSP :Curl prend en charge les téléchargements 1.0 de RTSP.SCP :Curl prend en charge les deux versions de transfert scp de SCP.SFTP :Curl prend en charge SFTP sur la version 2 de SSH.PME(S) :Curl prend en charge la version 1 de SMB pour le téléchargement et l'upload.SMTP(S) :Télécharger du contenu sur n'importe quel serveur SMTP signifie transférer un e-mail sans ou avec TLS.TELNET :Informer curl d'apporter une URL telnet démarre une session interactive dans laquelle il transfère ce qu'il lit via stdin et obtient ce que le serveur le transfère.TFTP :Curl peut implémenter des téléchargements TFTP.

Installation de la commande curl

La commande curl est fournie avec la plupart des Linux distributions. Mais, si le système ne supporte pas le curl par défaut. Vous devez l'installer manuellement. Pour installer curl, exécutez les commandes suivantes :

Mettez à jour le système en exécutant les commandes suivantes :

 sudo apt update sudo apt upgrade 

Maintenant, installez l'utilitaire curl en exécutant la commande ci-dessous :

 sudo apt install curl 

Vérifiez l'installation en exécutant la commande ci-dessous :

 curl -version 

La commande ci-dessus affichera la version installée de la commande curl.

Récupérer le contenu de l'URL spécifiée

Pour récupérer le contenu d'une URL spécifique, exécutez la commande curl, suivie de l'URL. Considérez la commande ci-dessous :

 curl https://www.javatpoint.com/linux-tutorial 

La commande ci-dessus récupérera les données de page de la page spécifiée. Considérez l'instantané ci-dessous de la sortie :

Commande Linux Curl

À partir de la sortie ci-dessus, nous pouvons voir que les données de la page de l'URL donnée sont récupérées. Pour arrêter l'exécution, appuyez sur les touches CTRL+C.

Enregistrer les données dans un fichier spécifique

Pour enregistrer les données dans un fichier spécifique, transmettez l'option « -o » suivie du répertoire, du nom du fichier et de l'URL comme suit :

 curl -o / 

Considérez la commande ci-dessous :

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

La commande ci-dessus enregistrera les données de la page dans le fichier « linux.html » sous le répertoire « /home/javatpoint/Documents/ ». Considérez le résultat ci-dessous :

Commande Linux Curl

À partir de la commande ci-dessus, nous pouvons voir la quantité totale de données téléchargées, les données reçues, la durée moyenne et quelques autres statistiques sur les données.

Pour vérifier les données téléchargées, ouvrez le fichier en exécutant la commande cat

 cd Documents cat linux.html 

Considérez l'instantané de sortie ci-dessous :

Commande Linux Curl

Télécharger un fichier à partir du Web

L’une des utilisations intéressantes et fascinantes de curl est que nous pouvons télécharger un fichier depuis le Web. Pour télécharger un fichier depuis le Web, copiez le lien de téléchargement et collez-le avec la commande curl. Nous pouvons également transmettre d'autres arguments pour le rendre plus précis. Par exemple, téléchargez la dernière version d'Ubuntu, copiez le lien de téléchargement d'ubuntu depuis son site officiel et collez-le avec la commande curl comme suit :

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

La commande ci-dessus téléchargera Ubuntu 20.04 dans le répertoire spécifié. Fournissez l'extension de fichier appropriée ; sinon, il téléchargera le fichier dans un format différent. Considérez le résultat ci-dessous :

Commande Linux Curl

À partir de la sortie ci-dessus, le fichier ubuntu.iso est en cours de téléchargement. Nous pouvons voir le temps de téléchargement, la taille du fichier, la vitesse de téléchargement et d'autres statistiques. Pour arrêter l'exécution, appuyez à tout moment sur les touches CTRL+D.

Reprendre les téléchargements interrompus

Il se peut que les téléchargements soient interrompus pour une raison quelconque. Nous pouvons reprendre les téléchargements en utilisant la commande curl. Pour reprendre le fichier interrompu, passez l'option '-C' avec la commande curl comme suit :

 curl -C 

La commande ci-dessus reprendra le téléchargement de l'URL spécifiée.

Télécharger plusieurs fichiers

Pour télécharger plusieurs fichiers, spécifiez les multiples URL séparées par un espace comme suit :

 curl -O 

La commande ci-dessus téléchargera les données des deux URL, respectivement.

Interroger les en-têtes HTTP

Les en-têtes HTTP contiennent des informations supplémentaires ; il permet au serveur Web de télécharger ces informations. Pour interroger les en-têtes HTTP d'un site Web, exécutez la commande avec l'option « -I » comme suit :

 curl -I www.javatpoint.com 

La commande ci-dessus produira le résultat ci-dessous :

Commande Linux Curl