GNU/Linux >> Tutoriels Linux >  >> Linux

15+ exemples pour la commande Linux cURL

Dans ce tutoriel, nous couvrirons la commande cURL sous Linux. Suivez-nous pendant que nous vous guidons à travers les fonctions de ce puissant utilitaire avec des exemples pour vous aider à comprendre tout ce dont il est capable.

Vous pouvez utiliser la commande cURL pour télécharger ou télécharger des données sur un serveur, en utilisant l'un de ses 20+ protocoles pris en charge. Ces données peuvent être un fichier, un e-mail ou une page Web.

Qu'est-ce que la commande cURL ?

cURL est un outil idéal pour interagir avec un site Web ou une API, envoyer des requêtes et afficher les réponses au terminal ou enregistrer les données dans un fichier. Parfois, vous pouvez l'utiliser dans le cadre d'un script plus large, en transmettant les données à d'autres fonctions pour un traitement ultérieur.

Étant donné que l'utilisation principale de cURL est de récupérer/télécharger des fichiers à partir de serveurs. Il remplit bien cette fonction, mais parfois la commande wget est meilleure pour ce travail.

Nous passerons en revue certaines des différences et des similitudes entre wget et cURL plus loin dans cet article.

Nous vous montrerons comment utiliser cURL dans les sections ci-dessous.

Télécharger un fichier

La commande la plus basique que nous pouvons donner à cURL est de télécharger un site Web ou un fichier. cURL utilisera HTTP comme protocole par défaut, sauf si nous en spécifions un autre. Pour télécharger un site Web, lancez simplement cette commande :

$ curl http://www.google.com

Bien sûr, entrez n'importe quel site Web ou page que vous souhaitez récupérer.

Faire une commande de base comme celle-ci sans options supplémentaires sera rarement utile car cela indique seulement à cURL de récupérer le code source de la page que vous avez fournie.

Lorsque nous avons exécuté notre commande, notre terminal est rempli de HTML et d'autres codes de script Web - pas quelque chose qui nous est particulièrement utile dans ce formulaire.

Téléchargeons plutôt le site Web sous forme de document HTML, de cette façon, le contenu peut être affiché. Ajoutez l'option –output à cURL pour y parvenir.

$ curl www.likegeeks.com --output likegeeks.html

Nous pouvons maintenant ouvrir le site Web que nous avons téléchargé et l'afficher dans un navigateur Web.

Si vous souhaitez télécharger un fichier en ligne, la commande est à peu près la même. Mais assurez-vous d'ajouter l'option –output à cURL comme nous l'avons fait dans l'exemple ci-dessus.

Si vous ne le faites pas, cURL enverra la sortie binaire du fichier en ligne à votre terminal, ce qui entraînera probablement un dysfonctionnement.

Voici à quoi cela ressemble lorsque nous lançons le téléchargement d'un document Word de 500 Ko.

Le téléchargement du document Word commence et indique la progression du téléchargement dans le terminal. Une fois le téléchargement terminé, le fichier sera disponible dans le répertoire dans lequel nous l'avons enregistré.

Dans cet exemple, nous n'avons pas spécifié de répertoire, donc le fichier a été enregistré dans notre répertoire de travail actuel (le répertoire à partir duquel nous avons exécuté la commande cURL).

Aussi, avez-vous remarqué l'option -L que nous avons spécifiée dans notre commande cURL ? Il était nécessaire pour télécharger ce fichier, et nous passons en revue sa fonction dans la section suivante.

Suivre la redirection

Si vous obtenez une sortie vide lorsque vous essayez de cURLer un site Web, cela signifie probablement que le site Web a dit à cURL de rediriger vers une URL différente. Par défaut, cURL ne suivra pas la redirection, mais vous pouvez le lui dire avec le commutateur -L.

$ curl -L www.likegeeks.com

Dans nos recherches pour cet article, nous avons constaté qu'il était nécessaire de spécifier le -L sur la majorité des sites Web, alors assurez-vous de vous souvenir de cette petite astuce. Vous pouvez même l'ajouter par défaut à la majorité de vos commandes cURL.

Arrêter et reprendre le téléchargement

Si votre téléchargement est interrompu, ou si vous avez besoin de télécharger un gros fichier mais que vous ne voulez pas tout faire en une seule session, cURL offre une option pour arrêter et reprendre le transfert.

Pour arrêter un transfert manuellement, vous pouvez simplement terminer le processus cURL de la même manière que vous arrêteriez presque tous les processus en cours d'exécution dans votre terminal, avec une combinaison ctrl+c.

Notre téléchargement a commencé mais a été interrompu avec ctrl+c, reprenons maintenant avec la syntaxe suivante :

$ curl -C - example.com/some-file.zip --output MyFile.zip

Le commutateur -C est ce qui reprend notre transfert de fichiers, mais notez également qu'il y a un tiret (-) juste après. Cela indique à cURL de reprendre le transfert de fichiers mais de regarder d'abord la partie déjà téléchargée afin de voir le dernier octet téléchargé et de déterminer où reprendre.

Notre transfert de fichiers a repris et s'est ensuite poursuivi pour terminer le téléchargement avec succès.

Spécifier le délai d'attente

Si vous voulez que cURL abandonne ce qu'il fait après un certain temps, vous pouvez spécifier un délai d'attente dans la commande. Ceci est particulièrement utile car certaines opérations dans cURL n'ont pas de délai d'attente par défaut, vous devez donc en spécifier un si vous ne voulez pas qu'il soit bloqué indéfiniment.

Vous pouvez spécifier un temps maximum pour exécuter une commande avec le commutateur -m. Une fois le temps spécifié écoulé, cURL quittera tout ce qu'il est en train de faire, même s'il est en train de télécharger ou de télécharger un fichier.

cURL s'attend à ce que votre temps maximum soit spécifié en secondes. Ainsi, pour expirer après une minute, la commande ressemblerait à ceci :

$ curl -m 60 example.com

Un autre type de délai d'attente que vous pouvez spécifier avec cURL est le temps de connexion. Cela permet de s'assurer que cURL ne passe pas un temps déraisonnable à essayer de contacter un hôte qui est hors ligne ou autrement inaccessible.

Il accepte les secondes comme argument :

$ curl --connect-timeout 60 example.com

Utiliser un nom d'utilisateur et un mot de passe

Vous pouvez spécifier un nom d'utilisateur et un mot de passe dans une commande cURL avec le commutateur -u. Par exemple, si vous vouliez vous authentifier avec un serveur FTP, la syntaxe ressemblerait à ceci :

$ curl -u username:password ftp://example.com

Vous pouvez l'utiliser avec n'importe quel protocole, mais FTP est fréquemment utilisé pour des transferts de fichiers simples comme celui-ci.

Si nous voulions télécharger le fichier affiché dans la capture d'écran ci-dessus, nous lançons simplement la même commande mais utilisons le chemin d'accès complet au fichier.

$ curl -u username:password ftp://example.com/readme.txt

Utiliser des proxys

Il est facile de demander à cURL d'utiliser un proxy avant de se connecter à un hôte. cURL attendra un proxy HTTP par défaut, sauf indication contraire de votre part.

Utilisez le commutateur -x pour définir un proxy. Comme aucun protocole n'est spécifié dans cet exemple, cURL supposera qu'il s'agit d'un proxy HTTP.

$ curl -x 192.168.1.1:8080 http://example.com

Cette commande utiliserait 192.168.1.1 sur le port 8080 comme proxy pour se connecter à example.com.

Vous pouvez également l'utiliser avec d'autres protocoles. Voici un exemple de ce à quoi cela ressemblerait d'utiliser un proxy HTTP pour cURL vers un serveur FTP et récupérer un fichier.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURL prend en charge de nombreux autres types de proxys et options à utiliser avec ces proxys, mais une extension supplémentaire dépasserait le cadre de ce guide. Consultez la page de manuel cURL pour plus d'informations sur le tunneling proxy, les proxys SOCKS, l'authentification, etc.

Téléchargement fragmenté de fichiers volumineux

Nous avons déjà montré comment vous pouvez arrêter et reprendre les transferts de fichiers, mais que se passerait-il si nous voulions que cURL ne télécharge qu'une partie d'un fichier ? De cette façon, nous pourrions télécharger un gros fichier en plusieurs morceaux.

Il est possible de télécharger uniquement certaines parties d'un fichier, au cas où vous auriez besoin de rester sous un plafond de téléchargement ou quelque chose comme ça. Vous pouvez utiliser l'indicateur –range pour accomplir cela.

Vous devez écrire la taille en octets. Donc, si nous voulions télécharger le dernier fichier Ubuntu .iso en morceaux de 100 Mo, notre première commande ressemblerait à ceci :

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

La deuxième commande devrait reprendre à l'octet suivant et télécharger un autre bloc de 100 Mo.

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

Répétez ce processus jusqu'à ce que cURL télécharge tous les morceaux. La dernière étape consiste à combiner les morceaux dans un seul fichier, ce qui peut être fait avec la commande cat.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Certificat client

Pour accéder à un serveur à l'aide de l'authentification par certificat au lieu de l'authentification de base, vous pouvez spécifier un fichier de certificat avec l'option –cert.

$ curl --cert path/to/cert.crt:password ftp://example.com

cURL a beaucoup d'options pour le format des fichiers de certificat.

Il existe également d'autres options liées aux certificats :–cacert, –cert-status, –cert-type, etc. Consultez la page de manuel pour une liste complète des options.

CURL silencieux

Si vous souhaitez supprimer le compteur de progression et les messages d'erreur de cURL, le commutateur -s fournit cette fonctionnalité. Il produira toujours les données que vous demandez, donc si vous souhaitez que la commande soit 100 % silencieuse, vous devrez diriger la sortie vers un fichier.

Combinez cette commande avec l'indicateur -O pour enregistrer le fichier dans votre répertoire de travail actuel. Cela garantira que cURL retourne avec 0 sortie.

$ curl -s -O http://example.com

Vous pouvez également utiliser l'option –output pour choisir où enregistrer le fichier et spécifier un nom.

$ curl -s http://example.com --output index.html

Obtenir les en-têtes

Saisir l'en-tête d'une adresse distante est très simple avec cURL, il vous suffit d'utiliser l'option -I.

$ curl -I example.com

Si vous combinez cela avec l'option –L, cURL renverra les en-têtes de chaque adresse vers laquelle il est redirigé.

$ curl -I -L example.com

Plusieurs en-têtes

Vous pouvez passer des en-têtes à cURL avec l'option -H. Et pour passer plusieurs en-têtes, il vous suffit d'utiliser l'option -H plusieurs fois. Voici un exemple :

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

Fichier de publication (téléchargement)

POST est un moyen courant pour les sites Web d'accepter des données. Par exemple, lorsque vous remplissez un formulaire en ligne, il y a de fortes chances que les données soient envoyées depuis votre navigateur en utilisant la méthode POST. Pour envoyer des données à un site Web de cette manière, utilisez l'option -d.

$ curl -d 'name=geek&location=usa' http://example.com

Pour télécharger un fichier, plutôt que du texte, la syntaxe ressemblerait à ceci :

$ curl -d @filename http://example.com

Utilisez autant de drapeaux -d que nécessaire pour spécifier toutes les données ou noms de fichiers différents que vous essayez de télécharger.

Vous pouvez utiliser l'option -T si vous souhaitez télécharger un fichier sur un serveur FTP.

$ curl -T myfile.txt ftp://example.com/some/directory/

Envoyer un e-mail

L'envoi d'un e-mail consiste simplement à télécharger des données depuis votre ordinateur (ou un autre appareil) vers un serveur de messagerie. Étant donné que cURL est capable de télécharger des données, nous pouvons l'utiliser pour envoyer des e-mails. Il existe une multitude d'options, mais voici un exemple d'envoi d'un e-mail via un serveur SMTP :

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

Vous devez formater correctement votre fichier e-mail. Quelque chose comme ça :

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

Comme d'habitude, des options plus détaillées et spécialisées peuvent être trouvées dans la page de manuel de cURL.

Lire l'e-mail

cURL prend en charge IMAP (et IMAPS) et POP3, vous pouvez les utiliser tous les deux pour récupérer des messages électroniques à partir d'un serveur de messagerie.

Connectez-vous en utilisant IMAP comme ceci :

$ curl -u username:password imap://mail.example.com

Cette commande répertorie les boîtes aux lettres disponibles, mais n'affiche aucun message spécifique. Pour ce faire, spécifiez l'UID du message avec l'option –X.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

Différence entre cURL et wget

Parfois, les gens confondent cURL et wget car ils sont tous deux capables de récupérer des données à partir d'un serveur. Mais c'est la seule chose qu'ils ont en commun.

Nous avons montré dans cet article de quoi cURL est capable. wget fournit un ensemble différent de fonctions. wget est le meilleur outil pour télécharger des sites Web et est capable de parcourir de manière récursive des répertoires et des liens pour télécharger des sites entiers.

Pour télécharger des sites Web, utilisez wget. Si vous utilisez un protocole autre que HTTP ou HTTPS, ou pour télécharger des fichiers, utilisez cURL. cURL est également une bonne option pour télécharger des fichiers individuels à partir du Web, bien que wget le fasse également.

J'espère que vous trouverez le tutoriel utile. Continuez à revenir.


Linux
  1. 12 exemples de commandes IP pour les utilisateurs Linux

  2. Exemples de commandes Linux curl – Partie 2

  3. Commande Linux killall pour les débutants (8 exemples)

  4. 15+ exemples pour la commande yum update

  5. 7 Exemples de commandes Linux df

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux curl pour les débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Commande de localisation Linux pour les débutants (8 exemples)

16 exemples pratiques de commande Linux LS pour les débutants

Explication de la commande Linux mv pour les débutants (8 exemples)