Sitedetout - Tutoriels informatiques

Comment utiliser la commande Linux curl + Exemples

Introduction

Curl (abréviation de client URL request library ou  bibliothèque de requêtes aux URL pour les clients ) est un outil en ligne de commande permettant d’envoyer ou de télécharger des ressources accessibles par le réseau. Curl est disponible sur Linux, MAC et Windows et peut servir aussi d’outil de diagnostic. En plus, Curl supporte une large variété des protocoles réseau comme HTTP, HTTPS, FTP, FTPS, SFTP etc…, la valeur par défaut étant HTTP.

Curl offre plusieurs fonctionnalités à savoir : Le support de proxy, l’authentification, la connection en SSL, les cookies…

Installation de la commande curl

Si curl n’existe pas sur votre machine, vous pouvez l’installer comme suit :

sudo yum install curl

Exemples d’utilisation de la commande curl

1- Afficher la version de curl et ses protocols supportés

L’option -V permet d’afficher plusieurs informations utiles comme la version, protocoles supportés et les fonctionnalités de la commande curl installée.

[root@localhost ~]# curl -V
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.36 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
2- Télécharger un fichier en gardant son nom d’origine

L’option -O permet de dire à curl de garder le nom d’origine du fichier téléchargé.

[root@localhost ~]# curl -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0  44174      0 --:--:-- --:--:-- --:--:-- 44225
[root@localhost ~]# ls
sitedetout.png

3- Télécharger plusieurs fichiers

[root@localhost ~]# curl -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png -O http://www.sitedetout.com/wp-content/uploads/2019/10/ruby-300x180.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0    99k      0 --:--:-- --:--:-- --:--:--  100k
100  6049  100  6049    0     0  47345      0 --:--:-- --:--:-- --:--:-- 47345
[root@localhost ~]# ls
ruby-300x180.png  sitedetout.png
4- Afficher la barre de progression du tééchargement

[root@localhost ~]# curl -# -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
######################################################################## 100,0%
5- Récupérer les entêtes http d’une url

[root@localhost ~]# curl -I http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
HTTP/1.1 200 OK
Date: Sun, 27 Oct 2019 21:50:28 GMT
Server: Apache
Last-Modified: Sat, 28 Jul 2018 13:03:46 GMT
Accept-Ranges: bytes
Content-Length: 8226
Cache-Control: max-age=2592000, public
Expires: Mon, 26 Oct 2020 21:50:28 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type, Authorization
Vary: User-Agent
Content-Type: image/png

Cependant, vous pouvez avoir parfois un message de type 301 comme le cas de google.fr

[root@localhost ~]# curl -I http://google.fr
HTTP/1.1 301 Moved Permanently
Location: http://www.google.fr/
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Oct 2019 21:52:09 GMT
Expires: Tue, 26 Nov 2019 21:52:09 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

En effet, google redirige une requête http vers une requête https. Dans ce cas on peut dire à curl de suivre la redirection grâce à l’option -L.

[root@localhost ~]# curl -I -L http://google.fr
HTTP/1.1 301 Moved Permanently
Location: http://www.google.fr/
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Oct 2019 21:52:18 GMT
Expires: Tue, 26 Nov 2019 21:52:18 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

HTTP/1.1 200 OK
Date: Sun, 27 Oct 2019 21:52:18 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2019-10-27-21; expires=Tue, 26-Nov-2019 21:52:18 GMT; path=/; domain=.google.fr; SameSite=none
Set-Cookie: NID=190=J_LUSy_BW_jXlhLaxDESAxR0-0R9I5HIGq5TbooujFboMsJr_gNxugMIy_RYyNNsCaZXteQRSMUVUqTie2o1oXHc1lWvvrq5eiUo4fTK3ybFZBBJ9b9vCBWM_fAB72LTQAQ34YsFjkTkpeugkMbtQXCkqmpzZDC72FrPLEOabAQ; expires=Mon, 27-Apr-2020 21:52:18 GMT; path=/; domain=.google.fr; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding
6- Limiter le débit maximum de transfert

L’option –limit-rate permet de fixer le taux de transfert maximum. En effet, remarquez la différence du temps d’exécution des deux requêtes suivantes.

[root@localhost ~]# curl --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0   1001      0  0:00:08  0:00:08 --:--:--  1169
[root@localhost ~]# curl --limit-rate 3k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0   4289      0  0:00:01  0:00:01 --:--:--  4288
7- Télécharger un fichier depuis un serveur FTP avec ou sans authentification

Pour télécharger un fichier avec authentification, vous pouvez utiliser l’option -u :

curl -u user:password ftp://speedtest.tele2.net/5MB.zip
[root@localhost ~]# curl -O ftp://speedtest.tele2.net/5MB.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5120k  100 5120k    0     0  1541k      0  0:00:03  0:00:03 --:--:-- 1541k
[root@localhost ~]# ls
5MB.zip 
8- Envoyer un fichier vers un serveur ftp avec ou sans authentification

Pour envoyer un fichier vers un serveur ftp, on utilisera l’option -T.

curl -T Fichier_A_Envoyer -u user:password ftp://speedtest.tele2.net
9- Relancer un téléchargement interrompu

Si vous avez commencer un téléchargement et que ce dernier a été interrompu pour une raison quelconque, vous pouvez le relancer avec l’option -C. Dans l’exemple suivant, j’ai interrompu moi même le téléchargement avec un crtl+c.

[root@localhost ~]# curl --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 44  8226   44  3685    0     0   1325      0  0:00:06  0:00:02  0:00:04  1325^C
[root@localhost ~]# curl -C - --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0    981      0  0:00:08  0:00:08 --:--:--  1090

10- Gestion des certificats SSL avec curl

Si vous essayer de récupérer une ressource en SSL depuis https://www.sitedetout.com, alors vous aurez l’erreur suivante.

[root@localhost ~]# curl -O https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (60) Peer's Certificate has expired.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Dans ce cas, vous pouvez utiliser l’option -k pour dire à curl de ne pas vérifier le certificat ssl.

[root@localhost ~]# curl -O -k https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0  13354      0 --:--:-- --:--:-- --:--:-- 13375

11- Envoyer des paramètre POST dans la requête curl

Afin d’envoyer des paramètre POST dans une commande curl, vous pouvez utiliser l’option -X et spécifier des données grâce à l’option –data.

[root@localhost ~]# curl -O -k -X POST --data "data1:valeur1,data2:valeur2" https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8253  100  8226  100    27  24422     80 --:--:-- --:--:-- --:--:-- 24482

Conclusion

Vous voilà prêts à utiliser la commande curl dans vos tâches quotidiennes. N’oubliez pas de partager cet article et voir les autres articles Linux.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Chargement...
Menu Title

Powered by themekiller.com