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 https://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 https://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-1.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-1.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-1.png -O https://sysreseau.net/wp-content/uploads/2018/01/1-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-1.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-1.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
How to download and install Kali Linux
Kill – Arrêter les processus sous linux
Apache : Apprendre à créer des virtual Hosts
How to check the lock status of a user account in Linux
Fail2Ban : How to protect Linux services