GNU/Linux >> Tutoriales Linux >  >> Linux

15 ejemplos prácticos de comandos cURL de Linux (ejemplos de descarga de cURL)

cURL es un paquete de software que consta de una herramienta de línea de comandos y una biblioteca para transferir datos mediante la sintaxis de URL.

cURL admite varios protocolos como DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet y TFTP.

Este artículo proporciona 15 ejemplos prácticos de uso de cURL.

1. Descargar un solo archivo

El siguiente comando obtendrá el contenido de la URL y lo mostrará en STDOUT (es decir, en su terminal).

$ curl http://www.centos.org

Para almacenar el resultado en un archivo, debe redirigirlo como se muestra a continuación. Esto también mostrará algunas estadísticas de descarga adicionales.

$ curl http://www.centos.org > centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

2. Guarde la salida cURL en un archivo

Podemos guardar el resultado del comando curl en un archivo usando las opciones -o/-O.

  • -o (o minúscula) el resultado se guardará en el nombre de archivo proporcionado en la línea de comando
  • -O (O mayúscula) se tomará el nombre de archivo en la URL y se utilizará como nombre de archivo para almacenar el resultado
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

Ahora la página gettext.html se guardará en el archivo llamado 'mygettext.html'. También puede notar que cuando ejecuta curl con la opción -o, muestra el medidor de progreso para la descarga de la siguiente manera.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

Cuando usa curl -O (O mayúscula), guardará el contenido en el archivo llamado 'gettext.html' en la máquina local.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Nota:Cuando curl tiene que escribir los datos en la terminal, deshabilita el medidor de progreso para evitar confusiones en la impresión. Podemos usar las opciones '>'|'-o'|'-O' para mover el resultado a un archivo.

Similar a cURL, también puede usar wget para descargar archivos. Consulte los ejemplos de wget para comprender cómo usar wget de manera efectiva.

3. Obtener varios archivos a la vez

Podemos descargar varios archivos de una sola vez especificando las URL en la línea de comando.
Sintaxis:

$ curl -O URL1 -O URL2

El siguiente comando descargará index.html y gettext.html y lo guardará con el mismo nombre en el directorio actual.

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

Tenga en cuenta que cuando descargamos varios archivos de un mismo servidor como se muestra arriba, curl intentará reutilizar la conexión.

4. Siga los encabezados de ubicación HTTP con la opción -L

De forma predeterminada, CURL no sigue los encabezados de ubicación HTTP. También se denomina como redireccionamientos. Cuando una página web solicitada se mueve a otro lugar, se enviará un encabezado de ubicación HTTP como respuesta y tendrá la ubicación real de la página web.

Por ejemplo, cuando alguien escribe google.com en el navegador de India, será redirigido automáticamente a 'google.co.in'. Esto se hace en función del encabezado de ubicación HTTP, como se muestra a continuación.

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>

El resultado anterior dice que el documento solicitado se movió a 'http://www.google.co.in/'.

Podemos insistir en curl para seguir la redirección usando la opción -L, como se muestra a continuación. Ahora descargará el código fuente html de google.co.in.

$ curl -L http://www.google.com

5. Continuar/Reanudar una descarga anterior

Con la opción curl -C, puede continuar una descarga que ya se detuvo por algún motivo. Esto será útil cuando descargue archivos grandes y la descarga se interrumpa.

Si decimos '-C -', entonces curl encontrará desde dónde comenzar a reanudar la descarga. También podemos dar un desplazamiento '-C '. Los bytes de desplazamiento proporcionados se omitirán desde el principio para el archivo de origen.

Inicie una descarga grande con curl y presione Ctrl-C para detenerla entre descargas.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

Nota:-# se usa para mostrar una barra de progreso en lugar de un medidor de progreso.

Ahora la descarga anterior se detuvo en 20,1%. Usando "curl -C -", podemos continuar la descarga desde donde la dejó anteriormente. Ahora la descarga continúa desde el 20,1%.

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

6. Limite la tasa de transferencia de datos

Puede limitar la cantidad a la que se transfieren los datos utilizando la opción –limit-rate. Puede especificar la tasa de transferencia máxima como argumento.

$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

El comando anterior limita la transferencia de datos a 1000 Bytes/segundo. curl puede usar una tasa de transferencia más alta por un corto período de tiempo. Pero en promedio, llegará a 1000B/segundo.

El siguiente fue el medidor de progreso para el comando anterior. Puede ver que la velocidad actual está cerca de los 1000 Bytes.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1 1215k    1 13601    0     0    957      0  0:21:40  0:00:14  0:21:26   999
  1 1215k    1 14601    0     0    960      0  0:21:36  0:00:15  0:21:21   999
  1 1215k    1 15601    0     0    962      0  0:21:34  0:00:16  0:21:18   999

7. Descargue un archivo solo si se modifica antes o después del tiempo determinado

Podemos obtener los archivos que se modifican después de un tiempo determinado usando la opción -z en curl. Esto funcionará tanto para FTP como para HTTP.

$ curl -z 21-Dec-11 http://www.example.com/yy.html

El comando anterior descargará el archivo yy.html solo si se modifica después de la fecha y hora indicadas

$ curl -z -21-Dec-11 http://www.example.com/yy.html

El comando anterior descargará el archivo yy.html, si se modifica antes de la fecha y hora indicadas.

Consulte 'man curl_getdate' para conocer las diversas sintaxis compatibles con la expresión de fecha

8. Pase la autenticación HTTP en cURL

En algún momento, los sitios web requerirán un nombre de usuario y una contraseña para ver el contenido (se puede hacer con el archivo .htaccess). Con la ayuda de la opción -u, podemos pasar esas credenciales de cURL al servidor web como se muestra a continuación.

$ curl -u username:password URL

Nota:Por defecto, curl usa la autenticación HTTP básica. Podemos especificar otro método de autenticación usando –ntlm | –digerir.

9. Descargar archivos del servidor FTP

cURL también se puede usar para descargar archivos de servidores FTP. Si la ruta de FTP dada es un directorio, por defecto listará los archivos bajo el directorio específico.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

El comando anterior descargará el archivo xss.php del servidor ftp y lo guardará en el directorio local.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Aquí, la URL dada se refiere a un directorio. Entonces cURL listará todos los archivos y directorios bajo la URL dada

Si es nuevo en FTP/sFTP, consulte el tutorial ftp sftp para principiantes.

10. Listar/Descargar usando Rangos

cURL admite rangos que se darán en la URL. Cuando se proporciona un rango, se descargarán los archivos que coincidan dentro del rango. Será útil descargar paquetes de los sitios espejo de FTP.

$ curl   ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/

El comando anterior enumerará todos los paquetes de rangos a-z en la terminal.

11. Subir archivos al servidor FTP

Curl también se puede usar para cargar archivos al servidor FTP con la opción -T.

$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

El comando anterior cargará el archivo llamado myfile.txt al servidor FTP. También puede cargar varios archivos al mismo tiempo utilizando las operaciones de rango.

$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

Opcionalmente podemos usar “.” para obtener la entrada de STDIN y transferirla al control remoto.

$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

El comando anterior obtendrá la entrada del usuario desde la entrada estándar y guardará el contenido en el servidor ftp con el nombre 'myfile_1.txt'.

Puede proporcionar una '-T' para cada URL y el par especifica qué cargar y dónde.

12. Más información usando la opción Verbose y Trace

Puede saber qué está pasando usando la opción -v. La opción -v habilita el modo detallado e imprimirá los detalles

curl -v http://google.co.in

El comando about generará lo siguiente

* About to connect() to www.google.co.in port 80 (#0)
*   Trying 74.125.236.56... connected
* Connected to www.google.co.in (74.125.236.56) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.google.co.in
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Tue, 10 Apr 2012 11:18:39 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in
.
.

Si necesita información más detallada, puede usar la opción –trace. La opción de rastreo habilitará un volcado de rastreo completo de todos los datos entrantes/salientes al archivo dado

=> Send header, 169 bytes (0xa9)
0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl
..
0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6
0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog
0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept
00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a                      : */*....
== Info: HTTP 1.0, assume close after body
<= Recv header, 17 bytes (0x11)
0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK.
0010: 0a

Esta opción detallada y de seguimiento será útil cuando curl falle por algún motivo y no sepamos por qué.

13. Obtenga la definición de una palabra usando el protocolo DICT

Puede usar cURL para obtener la definición de una palabra con la ayuda del protocolo DICT. Necesitamos pasarle una URL de servidor de diccionarios.

$ curl dict://dict.org/d:bash

El comando anterior enumerará el significado de bash de la siguiente manera

151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n.
   {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to
   strike, bask a blow, Sw. basa to beat, bas a beating.]
   To strike heavily; to beat; to crush. [Prov. Eng. & Scot.]
   --Hall Caine.
   [1913 Webster]

         Bash her open with a rock.               --Kipling.
   [Webster 1913 Suppl.]
.
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, n.
   1. a forceful blow, especially one that does damage to its
      target.
      [PJC]
.
.

Ahora puede ver que utiliza “The Collaborative International Dictionary of English”. Hay muchos diccionarios disponibles. Podemos listar todos los diccionarios usando

$ curl dict://dict.org/show:db

jargon "The Jargon File (version 4.4.7, 29 Dec 2003)"
foldoc "The Free On-line Dictionary of Computing (26 July 2010)"
easton "Easton's 1897 Bible Dictionary"
hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)"
bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

Ahora, para encontrar el significado real de Bash en la computadora, podemos buscar bash en el diccionario "foldoc" de la siguiente manera

$ curl dict://dict.org/d:bash:foldoc

El resultado será,

bash

   Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
   Bash is a {Posix}-compatible {shell} with full {Bourne shell}
   syntax, and some {C shell} commands built in.  The Bourne
   Again Shell supports {Emacs}-style command-line editing, job
   control, functions, and on-line help.  Written by Brian Fox of
   {UCSB}.

Para obtener más detalles con respecto a DICT, lea RFC2229

14. Usar proxy para descargar un archivo

Podemos especificar cURL para usar proxy para realizar la operación específica usando la opción -x. Necesitamos especificar el host y el puerto del proxy.

$ curl -x proxysever.test.com:3128 http://google.co.in

15. Enviar correo usando el protocolo SMTP

cURL también se puede usar para enviar correo usando el protocolo SMTP. Debe especificar la dirección de origen, la dirección de destino y la dirección IP del servidor de correo como se muestra a continuación.

$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com

Una vez que se ingresa el comando anterior, esperará a que el usuario proporcione los datos al correo. Una vez que haya redactado su mensaje, escriba . (punto) como la última línea, que enviará el correo electrónico inmediatamente.

Subject: Testing
This is a test mail
.

Linux
  1. Ejemplos de comandos curl de Linux – Parte 2

  2. Comando cp en Linux:7 ejemplos prácticos

  3. Comando de apagado de Linux:5 ejemplos prácticos

  4. 5 ejemplos prácticos del comando dd en Linux

  5. 10 ejemplos prácticos de comandos de Linux nm

12 ejemplos prácticos de In Command en Linux

Los 50 Ejemplos Prácticos del Comando SED en Linux

15 ejemplos prácticos del comando Rsync en Linux

5 ejemplos prácticos de Tail Command en Linux

Comando echo en Linux:7 ejemplos prácticos

Ejemplos prácticos de comando ping en Linux