𝗣𝗲𝘁𝗶𝗰𝗶𝗼𝗻𝗲𝘀 𝗛𝗧𝗧𝗣 𝘀𝗶𝗻 𝗰𝘂𝗿𝗹: 𝗕𝗮𝘀𝗵 /𝗱𝗲𝘃/𝗧𝗖𝗣 𝗲𝘅𝗽𝗹𝗶𝗰𝗮𝗱𝗼

Estás dentro de un contenedor Docker minimalista. Necesitas verificar un endpoint de una API. Escribes curl y recibes "command not found". Intentas con wget y obtienes el mismo error.

No hace falta entrar en pánico. Bash tiene una función oculta integrada en su núcleo. Se llama /dev/tcp.

Esta función te permite abrir conexiones TCP puras sin instalar ninguna herramienta. Funciona en casi cualquier sistema Linux.

Cómo funciona: Cuando haces referencia a /dev/tcp/hostname/port, Bash abre una conexión de socket. Esta es una característica específica de Bash. No funcionará en sh o zsh.

El comando mágico: exec 3<>/dev/tcp/hostname/port

Esta línea abre un descriptor de archivo bidireccional. Puedes escribir datos en él y leer las respuestas.

Ejemplo de petición GET:

#!/bin/bash
exec 3<>/dev/tcp/example.com/80
printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3
cat <&3
exec 3>&-

Por qué esto es útil: • Depuración en entornos minimalistas donde no puedes instalar paquetes. • Ejecución de comprobaciones de estado (health checks) en pipelines de CI/CD con cero dependencias. • Pruebas de conectividad en sistemas embebidos. • Aprender exactamente cómo funcionan las cabeceras HTTP.

Límites importantes a tener en cuenta: • Sin HTTPS: Bash no puede manejar el cifrado TLS/SSL. Usa openssl s_client para tráfico cifrado. • Sin redirecciones: Debes gestionarlas manualmente.