Cómo usar el comando Curl con ejemplos [Download Files]

El curl mando transfiere datos hacia o desde un servidor de red. Está disponible de forma predeterminada en todos los sistemas basados ​​en Linux. Se usa comúnmente para solucionar problemas de acceso a URL y para descargar archivos. Curl admite una amplia variedad de protocolos, incluidos HTTP, HTTPS, FTP, FTPS, SFTP, etc. Si no ha especificado ningún protocolo explícitamente, se utilizará HTTP de forma predeterminada. Curl funciona con libcurl para todas las funciones relacionadas con la transferencia.

Curl ofrece muchos trucos útiles, como soporte de proxy, autenticación de usuario, carga de FTP, publicación HTTP, conexiones SSL, cookies, resumen de transferencia de archivos, Metalink y más.

En este tutorial, discutiremos cómo utilizar curl comando y su básico opciones con ejemplos.

Si no encuentras curl instalado en sus sistemas Linux, utilice los siguientes comandos:

Instalar curl en Ubuntu / Debian

$ sudo apt install curl

Para instalar Curl en CentOS /Fedora

$ sudo yum install curl

Cómo utilizar curl mando

Sintaxis de curl:

$ curl [options] [URL]

  • opciones – El curl opciones que comienzan con uno o dos guiones.
  • URL: URL del servidor remoto.

El comando Curl seguido de la URL del sitio web muestra el código fuente del sitio web en la salida estándar.

Para imprimir el código fuente de https: //example.con:

$ curl https://example.com

Puede pasar la URL como entrada a la curl comando y redirigir la salida a un archivo.

Para example:

$ curl https://exmaple.com > example.html

Descarga un archivo con el mismo nombre

A descargar un archivo y guardarlo con el mismo nombre, use la opción -O.

Para example para descargar el archivo iso de Ubuntu 20.04, escriba:

$ curl -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Producción:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
5 2743M 5 156M 0 0 49.9M 0 0:00:54 0:00:03 0:00:51 49.9M

Verifique el archivo descargado:

$ ls
ubuntu-18.04.2-desktop-amd64.iso
$

A descargar un archivo y guárdalo con un nombre personalizado, use la opción -o.

$ curl -o ubuntu-20-04.iso https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Para verificar, use el comando ls:

$ ls
ubuntu-20-04.iso

Descarga varios archivos

A descargar varios archivos a la vez, utilice varios indicadores -O seguidos de la URL de los archivos.

Sintaxis:

$ curl -O [URL1] -O [URL2] -O [URL3] ...

Para example:

$ curl -O localhost/file.pdf -O localhost/file1.pdf

Para guardar varios archivos con nombres diferentes, use la opción -o anidada.

Para example:

$ curl -o file2.pdf localhost/file.pdf -o file3.pdf localhost/file1.pdf

Descargue archivos que tienen secuencia numérica, escriba:

$ curl ftp://ftp.example.com/file[1-30].jpeg

Descargar / cargar a través de FTP

Para acceder a un servidor FTP protegido con el curl comando necesita usar la bandera -u con un nombre de usuario y contraseña.

El siguiente comando enumerará todos los archivos y directorios en el directorio de inicio del usuario.

$ curl -u USERNAME:PASSWORD ftp://ftp.example.com/

Para descargar el archivo use:

$ curl -u USERNAME:PASSWORD ftp://ftp.example.com/file.tar.gz

Para cargar el archivo al servidor FTP, use la bandera -T:

$ curl -T newfile.tar.gz -u USERNAME:PASSWORD ftp://ftp.linoxide.com/

NOTA: Si el servidor FTP permite inicios de sesión anónimos, no es necesario utilizar -u nombre de usuario: contraseña

Subir archivo

Curl emula un formulario completo en el que un usuario ha presionado el botón enviar, usando la opción -F.

Para example para POST datos utilizando Content-Type multipart / form-data:

$ curl -F @field_name=@path/to/local_file <upload_URL>

Reanudar una descarga interrumpida

Si un la descarga fue interrumpida por alguna razón, puede reanudarlo usando la opción -C – para reanudar la descarga comenzando donde la dejó.

$ curl -C - -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Producción:

** Resuming transfer from byte position 2297856
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1901M 0 9842k 0 0 734k 0 0:44:10 0:00:13 0:43:57 339k

Curl para obtener encabezados HTTP

Para obtener el encabezado HTTP solo use el -I opción. Cuando se utiliza en un archivo FTP o FILE, muestra el tamaño del archivo y la hora de la última modificación únicamente.

Para example:

$ curl -I redhat.com
HTTP/1.0 301 Moved Permanently
Location: https://www.redhat.com/en
Server: BigIP
Connection: Keep-Alive
Content-Length: 0

Curl para seguir la redirección

A veces, es posible que encuentre una URL con errores como “Movido” o “Movido permanentemente”. Esto suele ocurrir cuando el Redireccionamientos de URL a alguna otra URL.

Para example, desde el resultado, google.com redirecciona a una URL www, por lo que obtiene un error como el siguiente:

$ curl google.com

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Decir curl para seguir la redirección, use la opción -L.

$ curl -L google.com

Caso de uso 1: si la URL desde donde está intentando descargar los archivos tiene alguna redirección 301, es posible que no descargue el archivo. Para example, si la URL tiene redirección de http a https, debe usar la opción -L para seguir la redirección y descargar.

$ curl -o test.txt -L https://www.test.com

Caso de uso 2: para comprobar la compatibilidad con un servidor remoto http2 use -L seguido de –http2. Para example

$ curl -I --http2 -s https://linoxide.com/ | grep HTTP

Si el resultado muestra HTTP / 2 200, indica que el servidor remoto admite HTTP / 2.

Limitar la tasa máxima de transferencia

El uso para limitar la velocidad de transferencia de datos es:

$ curl --limit-rate [value] [URL]

El valor se puede expresar en bytes, kilobytes con el sufijo k, megabytes con el sufijo m y gigabytes con el sufijo g.

El siguiente comando limitará la velocidad de descarga a 1 MB:

$ curl --limit-rate 1m -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Omitir certificados SSL

Por defecto, curl Verifique cada conexión SSL que haga. A veces, tiene problemas para descargar archivos debido a un error de SSL / TLS o al punto final de la API de prueba con un certificado autofirmado o uno no válido. En tales casos, omita SSL con la opción -k.

$ curl -o -k https://www.test.com

Verificar certificado autofirmado

Para verificar su certificado autofirmado en curl, use la opción –cacert.

curl --cacert myssl.crt -O https://test.com/file.tgz

Especificar cadena de agente de usuario

A especificar usuario-agente cadena para enviar al servidor HTTP utilice la opción -A.

Caso de uso: algún bloque de servidor http curl user-agent para descargar archivos, en tales situaciones curl permite especificar usuario-agente. Para example:

$ curl -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" -O https://localhost/file1.pdf

Especificar proxy

Usar el proxy HTTP especificado para descargar use la opción -x. Si no se especifica el número de puerto, se asume en el puerto 1080.

Para example para descargar el archivo usando el proxy específico 192.168.35.8 en el puerto 8080, escriba:

$ curl -x 192.168.35.8:8080 -O https://example.com/file01.tar.gz

Utilice la opción -U o –proxy-user para especificar el nombre de usuario y la contraseña de autenticación.

Para example:

$ curl -x 192.168.35.8:8080 -U user:password -O https://example.com/file01.tar.gz

Para almacenar / pasar cookies

A escribir cookies a un archivo que se descarga cuando accede a un recurso, use la opción –cookie-jar o -c seguida del nombre del archivo de texto para almacenarlo.

Para example para almacenar cookies de https://www.nytimes.com/ al archivo llamado cookies.txt, utilice:

$ curl -c cookies.txt https://www.nytimes.com/index.html -O

Puedes decir curl reutilizar cookies recibido antes usando la opción -b o –cookie seguido del nombre de archivo que contiene las cookies o una cadena. Esto pasará los datos al servidor HTTP como una cookie. Por defecto, curl no utiliza cookies para solicitar recursos.

PS curl -b cookies.txt https://www.nytimes.com

Tiempo total para una solicitud

Para obtener el Tiempo Total curl tomó para que una solicitud sea exitosa, use la opción -w.

Para example para imprimir el tiempo total después de que se complete la transferencia para descargar el archivo iso de ubuntu 20.04 después de que se complete la transferencia.

$ curl -w "%{time_total}n" -o /dev/null -s https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Producción:

276.044317

Resolución de nombre local

Para probar la versión local de un recurso para example Opción de resolución de uso de punto final de API. Estos desarrolladores para probar una API para la implementación.

$ curl --resolve www.example.com:80:localhost https://www.example.com/

Medidor de progreso

Curl de forma predeterminada muestra un medidor de progreso al cargar o descargar datos. Indicará información como el tamaño total, cuánto% y tamaño recibido, tiempo dedicado, tiempo restante, velocidad actual, etc.

Para mostrar un progreso alternativo uso del medidor – # o –progress-bar. Para example:

$ curl -# -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
############### 20.9%

Para deshabilitar el medidor de progreso, use –silent o -s.

$ curl -O --silent https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

Conclusión

En este tutorial, aprendimos a usar curl comando para transferir datos en Linux. Si quieres aprender más sobre curl visita el Documentación de rizos página. Déjeme saber sus pensamientos y sugerencias sobre este tutorial en la sección de comentarios a continuación.

Leer también:

  • httpie: un cliente de línea de comandos HTTP alternativo de Curl en Linux