La commande cURL sous Linux

Dans un monde numérique actuel, le partage de données entre serveurs et systèmes devient un élément vital pour le bon fonctionnement des développeurs et des administrateurs système. Parmi les outils puissants offerts par les systèmes Linux pour simplifier ce partage figure la commande cURL, permettant de télécharger des fichiers et d’envoyer des requêtes via plusieurs protocoles réseau, et figurant parmi les outils les plus polyvalents et performants.

cURL (abrégé de Client URL) est un outil en ligne de commande open source qui permet de transférer des données vers et depuis un serveur en utilisant une variété de protocoles réseau tels que HTTP, HTTPS, FTP, FTPS, SCP, SFTP, etc. Il a été initialement développé en 1997 par le développeur Daniel Stenberg et s’est depuis transformé en standard incontournable pour tester des API et transférer des données dans des environnements Linux/Unix.

La particularité unique de cURL réside dans son flexibilité et sa capacité à gérer presque tous les protocoles réseau courants de manière unifiée et cohérente. Imaginez que cURL ressemble à un couteau suisse militaire : il possède toutes les outils nécessaires pour gérer n’importe quel scénario de transfert de données via le réseau.

Bases de la commande cURL

Avant de plonger dans l’utilisation avancée de cURL, commençons par vérifier sa présence sur votre système et comment exécuter les commandes de base. Pour vérifier l’installation de cURL et afficher sa version, vous pouvez utiliser la commande suivante :

curl --version

Si cURL n’est pas installé sur votre système (ce qui est peu fréquent sur les distributions modernes), vous pouvez l’installer à l’aide du gestionnaire de paquets correspondant à votre distribution :

sudo apt install curl # pour Ubuntu/Debian
sudo yum install curl # pour CentOS/RHEL

L’utilisation fondamentale de cURL est très simple, sa syntaxe générale est :

curl [options] [URL]

Par exemple, pour télécharger le contenu d’une page web :

curl https://example.com

Cette commande envoie une requête GET au serveur spécifié et affiche la réponse dans la console. Elle peut être comparée à l’ouverture d’un navigateur et à l’entrée de l’adresse, mais au lieu d’obtenir une page formatée, vous obtenez le code source brut de la page.

Options principales et les plus utilisées de la commande cURL

cURL propose des dizaines d’options puissantes permettant de personnaliser le fonctionnement de l’outil. Voici les options les plus importantes avec des exemples pratiques :

Enregistrer la sortie dans un fichier :
curl -o output.html https://example.com

Suivre les redirections :
curl -L https://example.com

Afficher uniquement les en-têtes de réponse :
curl -I https://example.com

Envoyer une requête POST :
curl -d "name=John&age=30" https://example.com/api

Envoyer une requête avec des en-têtes personnalisés :
curl -H "Content-Type: application/json" https://api.example.com

Utiliser l’authentification basique :
curl -u username:password https://example.com

Définir la méthode de requête (GET, POST, PUT, DELETE…) :
curl -X POST https://api.example.com/users

Envoyer des données JSON :
curl -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com

Traitement des protocoles différents

La véritable puissance de cURL réside dans son support de nombreux protocoles réseau. Voici comment utiliser cURL avec quelques protocoles courants :

Protocole FTP (téléchargement de fichier) :
curl -u ftpuser:ftppass -O ftp://ftp.example.com/file.zip

Protocole FTPS (transfert sécurisé) :
curl --ftp-ssl -u user:pass -O ftps://ftp.example.com/secure-file.zip

Protocole SCP (transfert de fichiers sécurisé entre serveurs) :
curl -u username sftp://example.com/path/to/file

Test de service SMTP :
curl smtp://mail.example.com --mail-from sender@example.com --mail-rcpt receiver@example.com --upload-file email.txt

Exemples avancés et utilisations pratiques

Il existe de nombreuses situations où cURL peut être utilisé de manière avancée pour obtenir des résultats puissants :

Test d’API :
curl -X POST -H "Authorization: Bearer your_token" -H "Content-Type: application/json" -d '{"param1":"value1"}' https://api.example.com/endpoint

Télécharger un fichier volumineux avec reprise à partir du point d’arrêt :
curl -C - -O https://example.com/large-file.zip

Limiter la vitesse de téléchargement :
curl --limit-rate 100K -O https://example.com/file.zip

Utiliser un proxy :
curl -x http://proxy.example.com:8080 https://example.com

Gérer les cookies :
curl -c cookies.txt https://example.com/login

curl -b cookies.txt https://example.com/dashboard

Comparaison entre la commande cURL et la commande wget

Même si les deux sont des outils en ligne de commande pour gérer le réseau, il existe des différences importantes :

— cURL supporte un plus grand éventail de protocoles que la commande wget
— wget est plus efficace pour le téléchargement répétitif et le stockage de sites localement
— cURL est plus flexible lors de l’utilisation d’interfaces de programmation
— wget peut effectuer des téléchargements répétitifs
— cURL peut télécharger et télécharger, tandis que wget se concentre davantage sur le téléchargement

Astuces professionnelles et débogage

Pour tirer le meilleur parti de cURL, voici quelques conseils professionnels :

Activer le mode détaillé pour voir ce qui se passe en arrière-plan :
curl -v https://example.com

Ignorer la vérification du certificat SSL dans un environnement de développement :
curl -k https://example.com

Changer l’agent utilisateur (User Agent) :
curl -A "Mozilla/5.0" https://example.com

Utiliser un fichier de configuration pour les options répétitives :
echo -e "-H \"Authorization: Bearer token\"" >> ~/.curlrc

curl https://api.example.com

Exprimer le temps de réponse sans télécharger le contenu :
curl -o /dev/null -s -w "%{time_total}\n" https://example.com

Nous avons examiné dans ce guide complet la puissance de la commande cURL dans les systèmes Linux. En commençant par les bases comme l’exécution de requêtes HTTP simples, jusqu’aux techniques avancées comme la gestion des APIs complexes et l’utilisation de différents protocoles réseau. N’oubliez pas que cURL est un outil puissant pouvant être utilisé dans une large gamme de scénarios. Plus vous comprenez ses options et ses capacités, plus vous découvrirez des méthodes plus efficaces pour gérer le transfert de données via le réseau. Expérimentez différentes commandes et partagez vos expériences dans les commentaires !

Références

1. Site officiel du projet cURL

2. Documentation complète de cURL

3. Livret « cURL Cookbook »

4. Manuel des commandes Linux avancées

Partagez votre amour
meher makloufi
meher makloufi

Je suis un tunisien né en 1993, diplômé en informatique de gestion. Je travaille comme développeur web depuis 2016, et je suis un chercheur en informatique passionné. Je partage du contenu qui reflète mon expérience et tout ce que j'ai appris de manière simple et claire pour tous ceux qui cherchent à en savoir plus dans ce domaine. Je possède et gère plusieurs sites web et combine mon amour pour l'art avec la lecture de livres scientifiques, intellectuels et religieux. Je me porte volontaire autant que possible pour enrichir et soutenir la communauté technique arabe d'abord et la communauté mondiale ensuite.

Articles: 42