LINUX

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

Cómo usar el comando curl

Curl es una maravillosa herramienta disponible por defecto en sistemas basados ​​en UNIX. Es una utilidad de línea de comandos y una biblioteca. Es muy útil 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 de forma explícita, 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 usar el comando curl y descargar archivos usando las opciones de curl en Linux.

Actualmente, el paquete curl está preinstalado en la mayoría de las distribuciones de Linux. Las opciones -V o –version devolverán la versión y también los protocolos y funciones admitidos en su versión actual.

$ curl -V
curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

Instalar Curl en Ubuntu / Debian

$ sudo apt install curl

Instalar Curl en CentOS / Fedora

$ sudo yum install curl

Cómo usar el comando curl

El comando curl le permite descargar y cargar datos usando CLI (la línea de comando) en Linux. Esta es su sintaxis:

$ curl [options] [URL]
  • opciones: las opciones de Curl que comienzan con uno o dos guiones.
  • URL: URL del servidor remoto.

La forma más simple de usar curl es sin ninguna opción y mostrará el recurso especificado en el [url] a la salida estándar.

En el siguiente ejemplo, recuperaremos una de las páginas del blog linoxide.com:

El comando anterior imprimirá el código fuente de la página del blog linoxide.com que especificamos en nuestra ventana de terminal.

Si no especifica el protocolo, rizo intentará adivinar el protocolo que desea utilizar, y lo utilizará por defecto en HTTP.

$ curl https://linoxide.com/how-to-install-terraform-on-centos-ubuntu/

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

Por ejemplo:

$ curl https://linoxide.com/how-to-install-terraform-on-centos-ubuntu/ > install_terraform.html

La sintaxis de la URL depende del protocolo y se pueden escribir varias URL como conjuntos como:

$ curl https://website.{one, two, three}.com

Descarga un archivo con el mismo nombre

si lo desea, puede forzar a curl a usar el mismo nombre del archivo que se está descargando que el nombre del archivo local. Esto se puede hacer usando la opción de línea de comando -O.

$ curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso
$ ls
ubuntu-18.04.2-desktop-amd64.iso
$

Descarga varios archivos

Para descargar varios archivos a la vez, puede utilizar varios indicadores -O seguidos de la URL de los archivos que desea descargar.

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

Las URL con series de secuencia numérica se pueden escribir como:

$ curl ftp://ftp.example.com/file[1-30].jpeg
 $ curl -O localhost/file.pdf -O localhost/file1.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 20597  100 20597    0     0  1436k      0 --:--:-- --:--:-- --:--:-- 1436k
100 20597  100 20597    0     0   9.8M      0 --:--:-- --:--:-- --:--:--  9.8M

Si quieres guardar varios archivos con un nombre diferente, puede hacerlo con la opción -o anidada de la siguiente manera.

 $ curl -o file2.pdf localhost/file.pdf -o file3.pdf localhost/file1.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 20597  100 20597    0     0   957k      0 --:--:-- --:--:-- --:--:--  957k
100 20597  100 20597    0     0  19.6M      0 --:--:-- --:--:-- --:--:-- 19.6M

Mostrar barra de progreso para curvar la salida

Curl muestra un medidor de progreso durante la descarga del archivo para indicar la tasa de transferencia, la cantidad de datos transferidos, el tiempo restante, etc.

$ curl -# -O http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso
###############                                                           20.9%

Si le gusta una barra de progreso en lugar de un medidor, puede usar el – # opción como en el ejemplo anterior, o -silencio si desea desactivarlo por completo.

$ curl -O --silent http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso

Si quieres ver el tiempo necesario para la descarga del archivo, puede agregar el comando de tiempo de la siguiente manera.

$ time curl --output file1.pdf localhost/pdf-test.pdf -#
################################################################################################################################################## 100.0%
 
real    0m0.060s 
user    0m0.016s 
sys     0m0.047s

Curl para obtener encabezados HTTP de una URL

Para obtener los encabezados HTTP del sitio web especificado, use la bandera -I:

$ curl -I www.linoxide.com
HTTP/1.1 301 Moved Permanently
Date: Sat, 13 Apr 2019 16:39:03 GMT
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Sat, 13 Apr 2019 17:39:03 GMT
Location: https://www.linoxide.com/
Server: cloudflare
CF-RAY: 4c6edfb8a8437c78-BEG

A veces, es posible que encuentre una URL con errores como «Movido» o «Movido permanentemente». Esto suele ocurrir cuando la URL redirige a otra URL. Por ejemplo, google.com redirige 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="http://www.google.com/">here</A>.
</BODY></HTML>

Para decirle a curl que siga la redirección, use la opción de línea de comando -L en su lugar.

$ curl -L google.com

Si la URL desde donde está intentando descargar los archivos tiene alguna redirección 301, es posible que no descargue el archivo. Por ejemplo, si la URL tiene una redirección de http a https, debe usar la opción -L para seguir la redirección y descargar.

 $ curl -o test.txt -L http://www.test.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:09 --:--:--     0
100  364k    0  364k    0     0  18213      0 --:--:--  0:00:20 --:--:--  100k

Cómo 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 http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso

Descargue archivos o cargue archivos en un servidor FTP con o sin autenticación

Para acceder a un servidor FTP protegido con el comando curl, debe 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.linoxide.com/

Para descargar el archivo use:

$ curl -u USERNAME:PASSWORD ftp://ftp.linoxide.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

Reanudar una descarga interrumpida

Si una descarga se interrumpió por algún motivo, puede reanudarla usando -C para reanudar la descarga comenzando donde se detuvo.

$ curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso
$ curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso
** 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

Administrar certificados SSL en Curl

Si la URL que usa en curl da un error de SSL, puede omitir SSL usando la opción -k.

 $ curl -o -k https://www.test.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  364k    0  364k    0     0  34147      0 --:--:--  0:00:10 --:--:--  101k

Si desea verificar su certificado autofirmado en curl, puede usar la opción –cacert.

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

Suplantación de Useragent en Curl

Si la URL que utiliza se bloquea debido a la falta de un agente de usuario adecuado, puede falsificar el agente de usuario utilizando la opción «-A» en curl para imitar la experiencia del navegador.

 $ 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 http://localhost/file1.pdf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 20597  100 20597    0     0   874k      0 --:--:-- --:--:-- --:--:--  874k

URL HTTP POST con Curl

Puede enviar datos con POST en curl usando la opción -X.

 $ curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost/data

Conclusión

En este tutorial, aprendimos cómo usar el comando curl y descargar archivos en linux. Si desea obtener más información sobre curl, visite 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:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar