El comando curl en Linux es una herramienta versátil para transferir datos hacia y desde servidores usando URL. Admite protocolos como HTTP, HTTPS, FTPy más. Con curl, puedes descargar archivos, probar API, enviar encabezados, autenticarte, seguir redirecciones y automatizar tareas de red directamente desde la terminal con opciones compatibles con scripts.
Si trabajas con servidores Linuxya sea alojamiento web o API, aprender el comando curl en Linux es esencial. Es rápido, programable y perfecto para solucionar problemas de sitios web, verificar SSLy la interacción con puntos finales REST. En esta guía, aprenderá qué es curl, cómo instalarlo y ejemplos prácticos de curl que utilizan a diario los administradores de sistemas y los desarrolladores.
¿Qué es el comando curl en Linux?
curl (Client URL) es una utilidad de línea de comandos construida sobre la biblioteca libcurl que transfiere datos usando URL. Admite HTTP/S, FTP/S, SFTP, SCP, SMTP, IMAP y más.
A diferencia de los navegadores, curl se ejecuta de forma no interactiva, lo que lo hace ideal para la automatización y las pruebas de API. pipelines de CI / CDy diagnóstico del servidor. Está disponible en la mayoría de las distribuciones de Linux de forma predeterminada.
Cómo instalar curl en Linux
La mayoría de las distribuciones de Linux incluyen curl. Comprueba primero tu versión:
curl --versionSi falta, instálelo usando su paquete manager:
- Ubuntu / Debian:
sudo apt update && sudo apt install curl - RHEL/CentOS/Rocky/Alma:
sudo dnf install curlorsudo yuminstall curl - Fedora:
sudo dnf install curl - Arco:
sudo pacman -S curl - Alpino:
sudo apk add curl
Consejo: En servidores mínimos, considere instalar ca-certificates para evitar SSL errores con URL HTTPS.
Sintaxis básica de curl y opciones comunes
Sintaxis general:
curl [options] <URL>Opciones útiles para rizos (memorízalas primero):
-I(o--head): Obtener únicamente encabezados HTTP.-L:Seguir redirecciones.-o file: Guardar en un archivo (nombre personalizado).-O: Guardar usando el nombre de archivo remoto.-sy-S: Modo silencioso y visualización de errores.-v/-vv: Verboso / extra verboso.-X: Especifique el método HTTP (GET, POST, PUT, DELETE).-H: Añadir encabezado personalizado.--data/--data-raw/--data-binary: Enviar datos corporales.-u: Autorización básica (user:pass).--http2: Forzar HTTP/2.--compressed: Solicitar respuesta comprimida.--retry: Reintentar fallos transitorios.--max-time: Establezca un tiempo total máximo para la transferencia.
Ejemplos esenciales de rizos (de principiante a intermedio)
1) Solicitud GET básica
curl https://example.comEsto imprime el cuerpo HTML en la terminal.
2) Seguir redirecciones
curl -L http://example.comUtilice -L cuando sitios redirigen desde HTTP a HTTPS o a URL canónicas.
3) Descargar un archivo (guardarlo con el mismo nombre)
curl -O https://example.com/file.zipUtilice mayúsculas -O Para conservar el nombre del archivo del servidor. O bien, especifique el suyo propio:
curl -o backup.zip https://example.com/file.zip4) Reanudar una descarga interrumpida
curl -C - -O https://example.com/large.isoEl -C - La bandera continúa desde donde la dejó la descarga anterior.
5) Mostrar solo encabezados de respuesta
curl -I https://example.comÚtil para comprobar rápidamente el estado HTTP, los encabezados de caché y el tipo de servidor.
6) Incluir detalles de solicitud y respuesta (depuración)
curl -v https://example.comUsa -v or -vv para una solución de problemas más profunda, incluyendo SSLNegociación TLS.
7) Enviar un encabezado personalizado
curl -H "Accept: application/json" https://api.example.com/v1/statusSe pueden agregar múltiples encabezados a través de múltiples -H banderas. Esto es común con las API REST.
curl para API: JSON, POST, PUT, DELETE
Enviar JSON en una solicitud POST
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
--data '{"name":"Alice","email":"alice@example.com"}'Usa --data or --data-raw Para cargas útiles JSON. Siempre configurado Content-Type: application/json y encabezados de autenticación si es necesario.
Ejemplos de PUT (actualizar) y DELETE
# Update a user
curl -X PUT https://api.example.com/v1/users/123 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
--data '{"email":"new@example.com"}'
# Delete a user
curl -X DELETE https://api.example.com/v1/users/123 \
-H "Authorization: Bearer <TOKEN>"Carga de datos de formularios y archivos (multiparte)
# Post form fields
curl -X POST https://example.com/form \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "name=Alice&email=alice@example.com"
# Upload a file
curl -X POST https://api.example.com/v1/upload \
-H "Authorization: Bearer <TOKEN>" \
-F "file=@/path/to/report.pdf" \
-F "meta=quarterly"Usa -F para cargas de formularios multiparte; curl establece automáticamente los encabezados de límite correctos.
Autenticación con curl (básica, portadora, cookies)
Autenticación básica HTTP
curl -u "username:password" https://secure.example.com/endpointPor seguridad, prefiera tokens o variables de entorno en lugar de escribir las contraseñas directamente. También puede usar un .netrc archivo con permisos adecuados para almacenar credenciales.
Tokens portadores (claves API)
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com/v1/meCookies de sesión
# Save cookies during login
curl -c cookies.txt -X POST https://example.com/login \
-d "user=alice&pass=secret"
# Reuse cookies for subsequent requests
curl -b cookies.txt https://example.com/dashboardSSLTLS, certificados y proxies
curl realiza la validación del certificado de forma predeterminada cuando se utiliza HTTPS. Si ve SSL Si se producen errores, asegúrese de que los paquetes de CA del sistema estén instalados o especifique una CA personalizada.
# Use a custom CA certificate
curl --cacert /etc/ssl/certs/custom-ca.crt https://secure.example.com
# Client certificate (mutual TLS)
curl --cert client.crt --key client.key https://mtls.example.com
# Temporarily ignore certificate errors (not recommended)
curl -k https://self-signed.localEl soporte de proxy está integrado:
# HTTP proxy
curl -x http://proxy.local:3128 https://example.com
# SOCKS5 proxy
curl -x socks5h://user:pass@proxy.local:1080 https://example.com-k (--insecure) es solo para pruebas temporales. En producción, corrija las cadenas de confianza en lugar de omitir la validación.
Consejos avanzados de curl para DevOps y hosting
Establecer tiempos de espera y reintentos (scripts resilientes)
# Fail fast after 5 seconds total; retry up to 3 times on transient errors
curl --max-time 5 --retry 3 --retry-delay 2 --retry-connrefused https://api.example.com/healthCapturar el estado y el cuerpo HTTP por separado
status=$(curl -s -o /tmp/body.txt -w "%{http_code}" https://example.com/health)
echo "Status: $status"
cat /tmp/body.txtEl -w La opción (escritura) expone métricas útiles como tiempo, tamaño y protocolo.
Medida de rendimiento
curl -o /dev/null -s -w "dns:%{time_namelookup} connect:%{time_connect} ttfb:%{time_starttransfer} total:%{time_total}\n" https://example.comDescargar varios archivos
# Brace expansion (if server path structure matches)
curl -O https://example.com/logs/2024-12-{01..31}.logPara lotes grandes o paralelismo, considere usar GNU Parallel o xargs con curl.
Solución de problemas de errores de curl
- Problemas de conexión: Usa
-vy cheque DNS, cortafuegos y variables de proxy (http_proxy,https_proxy). - SSL errores: Instalar
ca-certificates, verificar la hora del sistema o utilizar--cacert. - Tiempos de espera: Aumentar
--max-timeo establecer--connect-timeout. - HTTP 4xx/5xx: Inspeccciona
-Iencabezados, verificar autenticación y carga útil, habilitar-v. - Límites de velocidad: Añadir retroceso con
--retry, y respetar las cuotas de API.
curl vs wget: ¿cuándo usar cuál?
- rizo: Ideal para API, encabezados personalizados, autenticación, protocolos granulares y control detallado. solicita características.
- obtener: Ideal para descargas recursivas de sitios web y duplicación. Fuerte. descargar Características, más sencillas para búsquedas masivas.
- En los servidores, muchos administradores instalan ambos. Para las pruebas REST y la automatización, curl suele ser la primera opción.
Mejores prácticas de seguridad con curl
- Evite colocar secretos en el historial del shell; utilice variables de entorno o
.netrc(restringir permisos a 600). - No confíes en
-ken producción; arreglar cadenas de confianza de certificados. - Validar las entradas si se crean scripts que interpolan URL o encabezados.
- Utilice tokens API con el mínimo privilegio y rótelos periódicamente.
- Enmascarar tokens en los registros de CI y preferir
--silentcon manejo explícito de errores.
Casos de uso reales en servidores Linux
- Controles de salud: Consulta
/healthpuntos finales en unidades cron o systemd. - Ganchos de implementación: Notificar a los webhooks (Slack, Git, CI) después de los lanzamientos.
- Verificación de respaldo: Validar el almacenamiento de objetos o las URL de CDN después de la carga.
- SSL validación: Confirme las cadenas de certificados y su vencimiento en el entorno de prueba antes de su lanzamiento.
- Prueba de contenido: Obtener encabezados para confirmar el estado de la caché (por ejemplo,
Cache-Control,ETag).
At YouStable, nuestra manageLos ingenieros de hosting usan curl a diario para probar el tiempo de actividad, verificar HTTPS en nuevos dominios y validar las integraciones de API. Si prefiere centrarse en su aplicación mientras nosotros nos encargamos del diagnóstico y el rendimiento a nivel de servidor, nuestro manageLos planes d pueden ayudar.
Preguntas Frecuentes
¿Para qué se utiliza curl en Linux?
curl se utiliza para transferir datos a través de URL. Las tareas habituales incluyen la descarga de archivos, la prueba y depuración de solicitudes HTTP/HTTPS, el envío de encabezados, la autenticación con API, la carga de archivos y la automatización de tareas de red en scripts o pipelines de CI/CD.
¿Cómo envío encabezados con curl?
Use el -H bandera. Ejemplo: curl -H "Accept: application/json" -H "Authorization: Bearer <TOKEN>" https://api.example.com/v1/data. Agrega uno -H por encabezado.
¿Cómo envío una solicitud POST con curl?
Usa -X POST con --data or -F Para formularios. Para JSON: curl -X POST -H "Content-Type: application/json" --data '{"id":1}' https://api.example.comPara subir archivos: curl -F "file=@/path/to/file.txt" https://api.example.com/upload.
¿Cómo sigo redirecciones en curl?
Use el -L : curl -L http://example.comEsto es útil cuando un sitio redirige de HTTP a HTTPS o utiliza reglas de redirección canónicas.
¿Cómo puedo solucionarlo? SSL ¿Errores de certificado con curl?
Instalar o actualizar ca-certificates, asegúrese de que la hora del sistema sea correcta o especifique una CA personalizada con --cacert. Evitar -k excepto para pruebas temporales; arregle la cadena de certificados para lograr seguridad de nivel de producción.
Conclusión
El comando curl en Linux es Imprescindible para desarrolladores, administradores de sistemas y propietarios de sitios web. Con unas pocas opciones básicas, puedes descargar archivos, probar API, manage Encabezados y automatice flujos de trabajo de forma fiable. Guarde los ejemplos anteriores e integre curl en sus herramientas diarias para agilizar las tareas de diagnóstico e implementación.