← Retour au blog
tech 16 juin 2026

TIL : Effectuer des requêtes HTTP sans curl avec Bash /dev/TCP

Découvrez comment utiliser Bash et /dev/TCP pour effectuer des requêtes HTTP sans curl dans des environnements minimalistes.

Article inspiré de la source originale
TIL: You can make HTTP requests without curl using Bash /dev/TCP ↗ mareksuppa.com

Introduction

Dans le monde des conteneurs et des microservices, il est parfois crucial d'effectuer des requêtes HTTP pour le diagnostic ou la surveillance, même lorsque les outils traditionnels comme curl ne sont pas disponibles. C'est ici que Bash et son astuce /dev/TCP entrent en jeu, permettant de réaliser des requêtes HTTP sans avoir besoin de bibliothèques supplémentaires.

L'astuce Bash /dev/TCP

L'idée derrière l'utilisation de /dev/TCP est simple mais puissante. Bash peut ouvrir un socket TCP, et en écrivant directement des requêtes HTTP au socket, on peut communiquer avec n'importe quel service HTTP. Cela peut être particulièrement utile dans des environnements Docker où l'image est minimale et dépourvue d'outils comme curl ou wget.

Exemple de base

Voici comment vous pouvez envoyer une requête GET simple :

``bash exec 3<>/dev/tcp/service/8642 printf 'GET /health HTTP/1.1\r\nHost: service\r\nConnection: close\r\n\r\n' >&3 cat <&3 ``

Dans cet exemple, service est le nom d'hôte de la cible, et 8642 est le port sur lequel le service écoute. Cela imprimera la réponse complète, y compris la ligne de statut, les en-têtes, et le corps de la réponse.

Limites et précautions

Bien que cette méthode soit ingénieuse, elle a ses limites. Elle ne gère pas correctement les redirections HTTP, les réponses chunked, la compression, ou le TLS. Pour des connexions sécurisées, vous devrez utiliser openssl s_client pour gérer le chiffrement TLS.

Gestion des connexions

La requête HTTP utilise Connection: close pour s'assurer que le serveur ferme la connexion après la réponse. Sinon, Bash pourrait attendre indéfiniment des données supplémentaires. Pour éviter les blocages, envelopper votre appel dans timeout peut être une solution utile.

Cas d'utilisation pratiques

Cette approche est idéale pour des tests rapides de connectivité ou pour le dépannage dans des environnements contraints. Par exemple, si vous travaillez avec des conteneurs allégés qui ne contiennent ni curl ni wget, Bash /dev/TCP offre une alternative viable pour vérifier la disponibilité des services.

Conclusion

Utiliser Bash et /dev/TCP pour des requêtes HTTP est une astuce utile pour tout développeur travaillant dans des environnements restreints. Bien que cela ne remplace pas un client HTTP complet, c'est un outil précieux pour le dépannage et les tests rapides.

Discutons de ton projet en 15 minutes.

HTTP Bash TCP curl alternative Docker
Newsletter Deepthix · 100% IA · chaque lundi 8h

Un agent IA lit la tech à ta place.

Notre agent IA scanne ~200 sources par semaine et te livre les meilleurs articles le lundi 8h. Gratuit. 1 clic pour se désinscrire.

Voir la page newsletter →

Tu veux automatiser tes opérations ?

Discutons de ton projet en 15 minutes.

Réserver un call