close
Linux/Unix

Curl : 8 Exemples utiles à connaître

curl
curl

Curl ( client URL request library ) est un outil open source en ligne puissant qui permet de faire des requêtes vers les serveurs pour récupérer et envoyer des données. Il sert également de faire des diagnostiques pour plusieurs protocoles ( FTP, HTTP, SFTP, SCP; etc).

Dans ce guide nous allons voir  8 exemples utiles de la commande curl.

1- Vérifier la version Curl :

[root@srv ~]# 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- Vérifier son adresse IP :

Savoir son adresse IP privé est facile il suffit de taper la commande ip a s ou bien ifconfig sous linux. Avec la commande curl, vous pouvez afficher votre adresse IP public en indiquant un site comme option icanhazip.com ou ifconfig.me :

[root@srv ~]# curl -s icanhazip.com
105.191.14.122

Personnellement j’ai crée un script avec cette commande pour me facilité la tache 🙂 :

[root@srv ~]# vim monIP
#!/bin/bash
curl -s icanhazip.com

[root@srv ~]# ./monIP
103.181.20.125

Vous pouvez avoir plus d’infos sur votre IP (ville, pays ..) avec la commande ci-dessous :

[root@srv ~]# curl ipinfo.io

3-Vérifier si un site est down :

[root@srv ~]# curl --head -s https://sysreseau.net | grep HTTP
HTTP/1.1 200 OK

là mon site est bien joignable =D .

Si le site que vous vérifiez est redirigé vers un autre, vous verrez un message de type 301 :

[root@srv ~]# curl --head -s http://sysreseau.net  | grep HTTP
HTTP/1.1 301 Moved Permanently

En effet mon site redirige les requêtes http vers les requêtes https, pour dire à Curl de suivre la redirection on utilise l’option -L :

[root@srv ~]# curl --head -L -s http://sysreseau.net | grep HTTP
HTTP/1.1 301 Moved Permanently
HTTP/1.1 200 OK

4- Télécharger un fichier depuis un serveur FTP :

-Sans  authentification :

[root@srv ~]# curl -O ftp://ftp.fr.debian.org/debian-amd64/README.mirrors.txt
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11453 100 11453 0 0 1906 0 0:00:06 0:00:06 --:--:-- 2395

[root@http1 ~]# ls -lh
-rw-r--r--. 1 root root  12K  7 juin  23:44 README.mirrors.txt

-Avec authentification :

[root@http1 ~]#curl -u user:password ftp://serverFTP/Fichier_A_Telecharger

5- Télécharger un fichier :

[root@http1 ~]# curl -O https://sysreseau.net/wp-content/uploads/2019/01/scp.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 45234  100 45234    0     0  12502      0  0:00:03  0:00:03 --:--:-- 12502

Vous pouvez afficher la base de progression avec -# :

[root@http1 ~]# curl -# -O https://sysreseau.net/wp-content/uploads/2019/01/scp.png
######################################################################## 100,0%

6- Télécharger plusieurs fichiers :

Pour télécharger plusieurs fichiers en une seule fois, il suffit d’utiliser l’option –O pour chaque fichier à récupérer :

[root@srv ~]# curl -O https://sysreseau.net/wp-content/uploads/2019/01/scp.png -O https://sysreseau.net/wp-content/uploads/2018/01/1-130x90.png
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45234 100 45234 0 0 23642 0 0:00:01 0:00:01 --:--:-- 23633
100 12961 100 12961 0 0 44717 0 --:--:-- --:--:-- --:--:-- 44717

7- Récupérer les entêtes http d’une url :

[root@srv ~]# curl -I https://sysreseau.net/wp-content/uploads/2019/01/scp.png
HTTP/1.1 200 OK
Date: Sat, 20 Jun 2020 15:30:33 GMT
Server: Apache
Vary: X-Forwarded-Proto
Last-Modified: Sun, 01 Mar 2020 17:16:19 GMT
ETag: "b0b2-59fce3aabd7c4"
Accept-Ranges: bytes
Content-Length: 45234
Cache-Control: max-age=31536000, public
Expires: Sun, 20 Jun 2021 15:30:33 GMT
Referrer-Policy: no-referrer-when-downgrade
Pragma: public
X-Powered-By: W3 Total Cache/0.13.1
Content-Type: image/png

8- Envoyer un fichier vers un serveur ftp :

-Sans authentification :

[root@srv ~]#curl -T Fichier_A_Envoyer -u user:password ftp://serverFTP

-Avec Authentification :

[root@srv ~]#curl -T Fichier_A_Envoyer ftp://serverFTP

9- Curl et SSL :

Si vous essayez de récupérer un fichier depuis un serveur dont le certificat SSL est expiré vous aurez l’erreur suivante :

curl: (60) Peer's Certificate has expired.

Utiliser l’option -k pour dire à curl de ne pas vérifier le certificat SSL :

[root@srv ~]#curl -O -k https://sysreseau.net/wp-content/uploads/2019/01/scp.png
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11453  100 11453    0     0   1906      0  0:00:06  0:00:06 --:--:--  2395

Leave a Response