GNU/Linux >> Tutoriels Linux >  >> Linux

Commandes cURL les plus utilisées et les plus populaires en pratique

cURL, abréviation de "Client for URLs", est un outil de ligne de commande pour transférer des données à l'aide de divers protocoles. Cet article vise à fournir les commandes largement utilisées et à servir de référence pratique.

Table des matières

  • Télécharger un seul fichier
  • Enregistrer la sortie cURL dans un fichier
  • Masquer la barre de progression
  • Récupérer plusieurs fichiers à la fois
  • Suivez les en-têtes d'emplacement HTTP avec l'option -L
  • Continuer/Reprendre un téléchargement précédent
  • Utiliser un proxy avec ou sans authentification
  • Interroger les en-têtes HTTP
  • Télécharger des fichiers sur le serveur FTP
  • Télécharger des fichiers à partir du serveur FTP
  • Répertorier/Télécharger à l'aide de plages
  • Plus d'informations à l'aide de l'option Verbose and Trace
  • Envoyer des e-mails à l'aide du protocole SMTP
  • Vérification de la prise en charge HTTP/2
  • Simuler des méthodes HTTP
  • Effectuer une requête POST avec des paramètres
  • Conclusion

Vous pouvez invoquer curl depuis votre terminal sans penser aux moyens de l'installer, car il est préinstallé sur la plupart des systèmes d'exploitation basés sur Linux.

Il existe une grande quantité de cas d'utilisation pour curl, tels que :

  • Téléchargement FTP
  • Prise en charge des proxys
  • Connexions SSL
  • Message HTTP

cURL prend également en charge l'utilisation de tous les protocoles suivants :DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET et TFTP.

Télécharger un seul fichier

La commande suivante obtiendra le contenu de l'URL et l'affichera dans le STDOUT (c'est-à-dire sur votre terminal).

curl https://www.gnu.org

Pour stocker la sortie dans un fichier, vous pouvez la rediriger comme indiqué ci-dessous. Cela affichera également des statistiques de téléchargement supplémentaires.

curl https://www.gnu.org > gnu-org.html

Enregistrer la sortie cURL dans un fichier

Nous pouvons enregistrer le résultat de la commande cURL dans un fichier en utilisant -o /-O options.

  • -o (o minuscule) le résultat sera enregistré dans le nom de fichier fourni dans la ligne de commande
  • -O (O majuscule) le nom de fichier dans l'URL sera pris et il sera utilisé comme nom de fichier pour stocker le résultat
curl -o my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html 

En conséquence, maintenant la page gettext.html sera enregistré dans le fichier nommé my-gettext.html . Vous pouvez également noter que lors de l'exécution de cURL avec -o option, il affiche la barre de progression du téléchargement comme suit.

Lorsque vous utilisez cURL -O , il enregistrera le contenu dans le fichier nommé "gettext.html" lui-même sur la machine locale.

curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Remarque :Lorsque curl doit écrire les données sur le terminal, il désactive le compteur de progression, pour éviter toute confusion lors de l'impression. Nous pouvons utiliser > , -o , -O options pour déplacer le résultat dans un fichier.

Masquer la barre de progression

cURL affiche par défaut la barre de progression. Pour le masquer -s (--silent ) peut être utilisée.

curl -s -O http://www.gnu.org/software/gettext/manual/gettext.html

Si pour une raison quelconque cela ne fonctionne pas sur votre plateforme, vous pouvez toujours rediriger stderr vers /dev/null :

curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null

Récupérer plusieurs fichiers à la fois

Bien sûr, nous pouvons télécharger plusieurs fichiers en une seule fois en spécifiant les URL sur la ligne de commande.

curl -O https://www.gnu.org/software/gettext/manual/html_node/index.html -O https://www.gnu.org/software/gettext/manual/gettext.html 

Suivre les en-têtes d'emplacement HTTP avec l'option -L

Cependant, par défaut, cURL ne suit pas les en-têtes HTTP Location. Il est également appelé redirections. Lorsqu'une page Web demandée est déplacée vers un autre endroit, un en-tête HTTP Location sera envoyé en tant que réponse et indiquera l'emplacement de la page Web réelle.

Nous pouvons insister sur cURL pour suivre la redirection en utilisant -L option, comme indiqué ci-dessous.

curl -L https://www.google.com

Continuer/Reprendre un téléchargement précédent

Utiliser cURL -C option, vous pouvez continuer un téléchargement qui a déjà été arrêté pour une raison quelconque. Cela sera utile lorsque vous téléchargez des fichiers volumineux et que le téléchargement a été interrompu.

Si nous disons -C - , puis cURL trouvera par où commencer pour reprendre le téléchargement. On peut aussi donner un offset -C <offset> . Les octets de décalage donnés seront ignorés depuis le début pour le fichier source.

Démarrer un gros téléchargement en utilisant curl , et appuyez sur Ctrl-C pour l'arrêter entre les téléchargements.

curl -O https://www.gnu.org/software/gettext/manual/gettext.html

Utilisation de curl -C - , nous pouvons reprendre le téléchargement là où il s'était arrêté plus tôt.

curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html

Utiliser un proxy avec ou sans authentification

Si vous êtes derrière un serveur proxy qui écoute sur le port 8080 sur proxy.votredomaine.com, procédez comme suit :

curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html 

où vous pouvez ignorer -U user:password si votre proxy ne nécessite pas d'authentification.

Interroger les en-têtes HTTP

Les en-têtes HTTP permettent au serveur Web distant d'envoyer des informations supplémentaires sur lui-même avec la requête proprement dite. De plus, cela fournit au client des détails sur la façon dont la demande est traitée.

Pour interroger les en-têtes HTTP d'un site Web, procédez comme suit :

curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en

Télécharger des fichiers sur le serveur FTP

cURL peut également être utilisé pour télécharger des fichiers sur le serveur FTP avec -T option.

curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.server.com

En conséquence, la commande ci-dessus téléchargera le fichier nommé myfile.txt au serveur FTP. Vous pouvez également télécharger plusieurs fichiers en même temps à l'aide des opérations de plage.

curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.server.com

En option, nous pouvons utiliser . pour obtenir l'entrée de STDIN et la transférer vers la télécommande.

curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt

La commande ci-dessus obtiendra l'entrée de l'utilisateur à partir de l'entrée standard et enregistrera le contenu sur le serveur ftp sous le nom mynewfile.txt .

Vous pouvez fournir un -T pour chaque URL et la paire spécifie quoi télécharger et où.

Télécharger des fichiers depuis le serveur FTP

cURL peut également être utilisé pour télécharger des fichiers à partir de serveurs FTP. Si le chemin FTP donné est un répertoire, par défaut, il listera les fichiers sous le répertoire spécifique.

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/mysql.php

La commande ci-dessus téléchargera le mysql.php fichier depuis le serveur ftp et enregistrez-le dans le répertoire local.

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Ici, l'URL donnée fait référence à un répertoire. Donc, cURL listera tous les fichiers et répertoires sous l'URL donnée.

Répertorier/Télécharger à l'aide de plages

cURL prend en charge les plages à donner dans l'URL. Lorsqu'une plage est donnée, les fichiers correspondant à la plage seront téléchargés. Il sera utile de télécharger des packages à partir des sites miroirs FTP.

curl http://ftp.us.debian.org/debian/pool/main/[a-z]/

La commande ci-dessus listera tous les packages de a-z plages dans le terminal.

Plus d'informations à l'aide de l'option Verbose and Trace

Vous pouvez savoir ce qui se passe en utilisant le -v option. Cette option active le mode verbeux et imprimera les détails.

curl -v https://www.gnu.org

La commande about affichera ce qui suit :

*   Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=emacs.org
*  start date: Jun 17 09:07:40 2020 GMT
*  expire date: Sep 15 09:07:40 2020 GMT
*  subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
< 
...

Envoyer un courrier à l'aide du protocole SMTP

cURL peut également être utilisé pour envoyer du courrier en utilisant le protocole SMTP. Vous devez spécifier l'adresse de départ, l'adresse de destination et l'adresse IP du serveur de messagerie comme indiqué ci-dessous.

curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com 

Une fois la commande ci-dessus entrée, il attendra que l'utilisateur fournisse les données au courrier. Une fois que vous avez composé votre message, tapez . (point) comme dernière ligne, qui enverra l'e-mail immédiatement.

Vérification de l'assistance HTTP/2

Si vous disposez de la dernière version de cURL, vous pouvez utiliser --http2 option pour vérifier si une URL particulière prend en charge le nouveau protocole HTTP/2. Par conséquent, si le site prend en charge HTTP/2, vous verrez HTTP/2.0 200 dans l'en-tête au lieu de HTTP/1.1 200 .

curl -I --http2 https://www.opensource.com

Simuler les méthodes HTTP

Le GET La méthode est utilisée pour récupérer des ressources à partir d'une URL particulière. La boucle curl https://www.gnu.org/ la commande utilisera GET comme méthode HTTP par défaut, mais elle peut également être spécifiée à l'aide de --request GET ou -X GET .

curl --request GET https://www.gnu.org

Le POST méthode est utilisée pour publier des informations sur un serveur Web (par exemple, un commentaire sur un forum). Cela peut être spécifié en utilisant --request POST ou -X POST .

curl --request POST https://yourwebsite.com

Le DELETE La méthode supprime la ressource du serveur Web associée à une URL spécifique. Cela peut être spécifié en utilisant --request DELETE ou -X DELETE .

curl --request DELETE https://yourwebsite.com

Le PUT La méthode crée ou remplace une ressource en fonction des données que le client soumet au serveur Web. (par exemple, créer une nouvelle page Web ou mettre à jour une page existante). Cela peut être spécifié en utilisant --request PUT ou -X PUT .

curl --request PUT https://yourwebsite.com

Effectuer une requête POST avec paramètres

La commande suivante enverra le animal1 et animal2 paramètres, ainsi que leurs valeurs correspondantes, à https://yourdomain.com/animals.php

curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php

Vous pouvez utiliser cette astuce pour simuler le comportement d'un formulaire HTML standard.

Conclusion

Dans cet article, nous avons expliqué ce qu'est cURL et ce que vous pouvez faire avec certaines commandes de base. Pour en savoir plus sur cURL, vous pouvez visiter le site Web du projet.


Linux
  1. Commandes Nginx les plus utiles dans le système Linux

  2. [Linux] :15 commandes YUM les plus fréquemment utilisées avec des exemples

  3. Téléchargez la feuille de triche de l'interface de ligne de commande OpenStack ! – Commandes les plus couramment utilisées

  4. Commandes de redémarrage et d'arrêt de Linux

  5. lsof :Exemples les plus couramment utilisés

Recherchez, étudiez et pratiquez les commandes Linux à la volée à l'aide de Tldr++

La différence entre plus, moins et la plupart des commandes

Comment trouver les commandes les plus utilisées sous Linux

40+ commandes Ubuntu 20.04 les plus utilisées

Les commandes FFmpeg les plus utiles pour la conversion audio et vidéo

90 commandes Linux fréquemment utilisées par les administrateurs système Linux