El comando curl es una herramienta potente y versátil en Linux (y otros sistemas operativos) que se utiliza para transferir datos hacia o desde un servidor. Es compatible con múltiples protocolos, como HTTP, HTTPS, FTP, SFTP, y más. curl es muy popular para interactuar con APIs REST, descargar archivos y probar respuestas de servidores.
Muchos usuarios suelen comparar curl con otra utilidad popular: wget. Y aunque ambos comandos pueden utilizarse para transferir datos desde o hacia servidores, no son exactamente iguales. curl ofrece mayor flexibilidad al trabajar con distintos protocolos y configuraciones de red, siendo ideal para desarrolladores y administradores que necesitan control detallado sobre las solicitudes HTTP. Por otro lado, wget es más sencillo y eficaz para descargas recursivas o en segundo plano.
Utilidad del comando curl
- Ligero: No necesita navegador o interfaz gráfica.
- Scripting: Fácil de usar en scripts de shell para automatización.
- Interoperabilidad: Compatible con muchos protocolos.
- Depuración: Ideal para probar respuestas de servidores.
Sintaxis básica comando curl
curl [opciones] [URL]
- opciones: Varias banderas para controlar el comportamiento de curl.
- URL: La dirección del servidor o recurso con el que deseas interactuar.
Ejemplos comunes
- Descargar un Archivo
curl -O https://example.com/archivo.txt
#-O: Guarda el archivo con su nombre original.
- Hacer una Solicitud GET
curl https://api.example.com/datos
#Por defecto, curl utiliza el método GET para recuperar datos.
- Enviar una Solicitud POST
curl -X POST -d "nombre=Juan&edad=30" https://www.ejemplo.com/api
#-X POST: Especifica el método HTTP.
#-d: Envía datos en el cuerpo de la solicitud.
- Enviar Encabezados (Headers)
curl -H "Authorization: Bearer token123" https://api.example.com/seguro
#-H: Añade un encabezado personalizado.
- Guardar la Salida en un Archivo
curl https://example.com -o salida.html
#-o: Guarda la salida en un archivo específico.
- Seguir Redirecciones
curl -L https://example.com
#-L: Sigue redirecciones HTTP 3xx.
- Usar Autenticación
curl -u usuario:contraseña https://example.com/protegido
#-u: Especifica credenciales de usuario.
- Descargar con Barra de Progreso
curl -# -O https://example.com/archivo_grande.zip
#-#: Muestra una barra de progreso.
- Enviar encabezado en formato JSON
curl -X GET -H "Content-Type: application/json" https://api.example.com/test
- Subir un Archivo
curl -T mi_archivo.txt https://www.ejemplo.com/upload/nuevo_nombre.txt
#-T: Sube el archivo especificado.
Opciones Clave comando curl
- -I: Solo obtiene encabezados (solicitud HEAD).
curl -I https://example.com
- -v: Salida detallada, mostrando encabezados de solicitud y respuesta.
curl -v https://example.com
- -k: Ignora errores de certificados SSL
curl -k https://example.com
- –limit-rate: Limita la velocidad de descarga (útil para pruebas).
curl --limit-rate 100k https://example.com/archivo.zip
- –retry: Reintenta solicitudes fallidas.
curl --retry 3 https://example.com
- –data-raw: Envía datos en bruto en el cuerpo de una solicitud.
curl -X POST --data-raw '{"clave":"valor"}' -H "Content-Type: application/json" https://api.example.com
Ejemplo de interacción con una API REST
Supongamos que trabajas con una API que requiere autenticación y devuelve respuestas en JSON:
1) Envía una solicitud POST para autenticarte:
curl -X POST -d "usuario=admin&contraseña=secreta" https://api.example.com/autenticar
2) Usa el token recibido para obtener datos seguros:
curl -H "Authorization: Bearer tu_token_aquí" https://api.example.com/datos
Buenas prácticas
- Usa -v o –trace para depurar problemas de conexión.
- Evita usar -k para omitir comprobaciones SSL, a menos que sea en entornos de confianza.
- Valida siempre los endpoints de las API y sus respuestas al automatizar tareas con curl.
Conclusiones
Ahora que hemos terminado de explicar el comando curl, probablemente ya te sientas más confiado para usarlo en diferentes escenarios. Desde tareas sencillas como descargar un archivo, hasta pruebas más avanzadas con cabeceras HTTP y autenticación, curl demuestra ser una herramienta versátil, rápida y poderosa.
Pingback: Comando wget: Descargando archivos desde la terminal : Kamilinux