GNU/Linux >> Tutoriales Linux >  >> Linux

Más de 15 ejemplos para el comando cURL de Linux

En este tutorial, cubriremos el comando cURL en Linux. Siga mientras lo guiamos a través de las funciones de esta poderosa utilidad con ejemplos para ayudarlo a comprender todo lo que es capaz de hacer.

Puede usar el comando cURL para descargar o cargar datos en un servidor, usando uno de sus más de 20 protocolos compatibles. Estos datos pueden ser un archivo, un mensaje de correo electrónico o una página web.

¿Qué es el comando cURL?

cURL es una herramienta ideal para interactuar con un sitio web o API, enviar solicitudes y mostrar las respuestas al terminal o registrar los datos en un archivo. A veces puede usarlo como parte de una secuencia de comandos más grande, entregando los datos a otras funciones para su posterior procesamiento.

Dado que el uso principal de cURL es recuperar/descargar archivos de los servidores. Realiza bien esta función, pero a veces el comando wget es mejor para ese trabajo.

Repasaremos algunas de las diferencias y similitudes entre wget y cURL más adelante en este artículo.

Le mostraremos cómo usar cURL en las siguientes secciones.

Descargar un archivo

El comando más básico que podemos darle a cURL es descargar un sitio web o un archivo. cURL usará HTTP como su protocolo predeterminado a menos que especifiquemos uno diferente. Para descargar un sitio web, simplemente emita este comando:

$ curl http://www.google.com

Por supuesto, ingrese a cualquier sitio web o página que desee recuperar.

Hacer un comando básico como este sin opciones adicionales rara vez será útil porque esto solo le dice a cURL que recupere el código fuente de la página que ha proporcionado.

Cuando ejecutamos nuestro comando, nuestro terminal se llena con HTML y otro código de secuencias de comandos web, algo que no es particularmente útil para nosotros en este formulario.

En su lugar, descarguemos el sitio web como un documento HTML, de esa manera se puede mostrar el contenido. Agrega la opción –output a cURL para lograr esto.

$ curl www.likegeeks.com --output likegeeks.html

Ahora podemos abrir el sitio web que descargamos y mostrarlo en un navegador web.

Si desea descargar un archivo en línea, el comando es casi el mismo. Pero asegúrese de agregar la opción de salida a cURL como hicimos en el ejemplo anterior.

Si no lo hace, cURL enviará la salida binaria del archivo en línea a su terminal, lo que probablemente provocará un mal funcionamiento.

Así es como se ve cuando iniciamos la descarga de un documento de Word de 500 KB.

El documento de Word comienza a descargarse y muestra el progreso de la descarga en la terminal. Cuando se complete la descarga, el archivo estará disponible en el directorio donde lo guardamos.

En este ejemplo, no especificamos un directorio, por lo que el archivo se guardó en nuestro directorio de trabajo actual (el directorio desde el que ejecutamos el comando cURL).

Además, ¿notó la opción -L que especificamos en nuestro comando cURL? Era necesario para descargar este archivo, y repasaremos su función en la siguiente sección.

Seguir redirección

Si obtiene una salida vacía cuando intenta cURL un sitio web, probablemente significa que el sitio web le dijo a cURL que redirigir a una URL diferente. De forma predeterminada, cURL no seguirá la redirección, pero puede indicarle que lo haga con el modificador -L.

$ curl -L www.likegeeks.com

En nuestra investigación para este artículo, descubrimos que era necesario especificar la -L en la mayoría de los sitios web, así que asegúrese de recordar este pequeño truco. Incluso puede agregarlo a la mayoría de sus comandos cURL de forma predeterminada.

Detener y reanudar la descarga

Si su descarga se interrumpe, o si necesita descargar un archivo grande pero no quiere hacerlo todo en una sola sesión, cURL ofrece una opción para detener y reanudar la transferencia.

Para detener una transferencia manualmente, puede finalizar el proceso cURL de la misma manera que detendría casi cualquier proceso que se esté ejecutando actualmente en su terminal, con una combinación ctrl+c.

Nuestra descarga ha comenzado pero se interrumpió con ctrl+c, ahora reanudémosla con la siguiente sintaxis:

$ curl -C - example.com/some-file.zip --output MyFile.zip

El interruptor -C es lo que reanuda nuestra transferencia de archivos, pero también observe que hay un guión (-) justo después. Esto le dice a cURL que reanude la transferencia de archivos, pero primero mire la porción ya descargada para ver el último byte descargado y determinar dónde reanudar.

Nuestra transferencia de archivos se reanudó y luego procedió a finalizar la descarga con éxito.

Especificar tiempo de espera

Si desea que cURL abandone lo que está haciendo después de un cierto período de tiempo, puede especificar un tiempo de espera en el comando. Esto es especialmente útil porque algunas operaciones en cURL no tienen un tiempo de espera predeterminado, por lo que debe especificarse uno si no desea que se cuelgue indefinidamente.

Puede especificar un tiempo máximo para ejecutar un comando con el modificador -m. Cuando haya transcurrido el tiempo especificado, cURL saldrá de lo que sea que esté haciendo, incluso si está descargando o cargando un archivo.

cURL espera que su tiempo máximo se especifique en segundos. Entonces, para el tiempo de espera después de un minuto, el comando se vería así:

$ curl -m 60 example.com

Otro tipo de tiempo de espera que puede especificar con cURL es la cantidad de tiempo para conectarse. Esto ayuda a garantizar que cURL no gaste una cantidad de tiempo irrazonable intentando comunicarse con un host que está desconectado o inaccesible de alguna otra manera.

Acepta segundos como argumento:

$ curl --connect-timeout 60 example.com

Usar un nombre de usuario y una contraseña

Puede especificar un nombre de usuario y una contraseña en un comando cURL con el modificador -u. Por ejemplo, si quisiera autenticarse con un servidor FTP, la sintaxis se vería así:

$ curl -u username:password ftp://example.com

Puede usar esto con cualquier protocolo, pero FTP se usa con frecuencia para transferencias de archivos simples como esta.

Si quisiéramos descargar el archivo que se muestra en la captura de pantalla anterior, simplemente emitimos el mismo comando pero usamos la ruta completa al archivo.

$ curl -u username:password ftp://example.com/readme.txt

Usar servidores proxy

Es fácil dirigir a cURL para que use un proxy antes de conectarse a un host. cURL esperará un proxy HTTP de forma predeterminada a menos que especifique lo contrario.

Utilice el modificador -x para definir un proxy. Como no se especifica ningún protocolo en este ejemplo, cURL asumirá que es un proxy HTTP.

$ curl -x 192.168.1.1:8080 http://example.com

Este comando usaría 192.168.1.1 en el puerto 8080 como proxy para conectarse a example.com.

También puede usarlo con otros protocolos. Este es un ejemplo de cómo sería usar un proxy HTTP para cURL a un servidor FTP y recuperar un archivo.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURL es compatible con muchos otros tipos de proxies y opciones para usar con esos proxies, pero expandirse aún más estaría fuera del alcance de esta guía. Consulte la página de manual de cURL para obtener más información sobre túneles de proxy, proxies SOCKS, autenticación, etc.

Descarga fragmentada de archivos grandes

Ya hemos mostrado cómo puede detener y reanudar las transferencias de archivos, pero ¿qué sucede si queremos que cURL solo descargue una parte de un archivo? De esa forma, podríamos descargar un archivo grande en varios fragmentos.

Es posible descargar solo ciertas partes de un archivo, en caso de que necesite permanecer bajo un límite de descarga o algo así. Puede usar la marca –range para lograr esto.

Debe escribir el tamaño en bytes. Entonces, si quisiéramos descargar el último archivo .iso de Ubuntu en fragmentos de 100 MB, nuestro primer comando se vería así:

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

El segundo comando necesitaría continuar en el siguiente byte y descargar otro fragmento de 100 MB.

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

Repita este proceso hasta que cURL descargue todos los fragmentos. El último paso es combinar los fragmentos en un solo archivo, lo que se puede hacer con el comando cat.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Certificado de cliente

Para acceder a un servidor utilizando la autenticación de certificado en lugar de la autenticación básica, puede especificar un archivo de certificado con la opción –cert.

$ curl --cert path/to/cert.crt:password ftp://example.com

cURL tiene muchas opciones para el formato de los archivos de certificado.

También hay más opciones relacionadas con certificados:–cacert, –cert-status, –cert-type, etc. Consulte la página man para obtener una lista completa de opciones.

CURL silencioso

Si desea suprimir el medidor de progreso y los mensajes de error de cURL, el interruptor -s proporciona esa función. Todavía generará los datos que solicite, por lo que si desea que el comando sea 100% silencioso, deberá dirigir la salida a un archivo.

Combine este comando con el indicador -O para guardar el archivo en su directorio de trabajo actual. Esto asegurará que cURL regrese con 0 resultados.

$ curl -s -O http://example.com

Alternativamente, puede usar la opción de salida para elegir dónde guardar el archivo y especificar un nombre.

$ curl -s http://example.com --output index.html

Obtener encabezados

Tomar el encabezado de una dirección remota es muy simple con cURL, solo necesita usar la opción -I.

$ curl -I example.com

Si combina esto con la opción –L, cURL devolverá los encabezados de cada dirección a la que se redirige.

$ curl -I -L example.com

Múltiples encabezados

Puede pasar encabezados a cURL con la opción -H. Y para pasar múltiples encabezados, solo necesita usar la opción -H varias veces. He aquí un ejemplo:

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

Publicar (cargar) archivo

POST es una forma común para que los sitios web acepten datos. Por ejemplo, cuando completa un formulario en línea, es muy probable que los datos se envíen desde su navegador mediante el método POST. Para enviar datos a un sitio web de esta manera, utilice la opción -d.

$ curl -d 'name=geek&location=usa' http://example.com

Para cargar un archivo, en lugar de texto, la sintaxis se vería así:

$ curl -d @filename http://example.com

Utilice tantos indicadores -d como necesite para especificar todos los diferentes datos o nombres de archivos que está tratando de cargar.

Puede utilizar la opción -T si desea cargar un archivo en un servidor FTP.

$ curl -T myfile.txt ftp://example.com/some/directory/

Enviar un correo electrónico

Enviar un correo electrónico es simplemente cargar datos desde su computadora (u otro dispositivo) a un servidor de correo electrónico. Dado que cURL puede cargar datos, podemos usarlo para enviar correos electrónicos. Hay un montón de opciones, pero aquí hay un ejemplo de cómo enviar un correo electrónico a través de un servidor SMTP:

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

Necesita formatear su archivo de correo electrónico correctamente. Algo como esto:

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

Como de costumbre, se pueden encontrar opciones más granulares y especializadas en la página man de cURL.

Leer mensaje de correo electrónico

cURL es compatible con IMAP (e IMAPS) y POP3, puede usar ambos para recuperar mensajes de correo electrónico de un servidor de correo.

Inicie sesión usando IMAP así:

$ curl -u username:password imap://mail.example.com

Este comando enumerará los buzones disponibles, pero no verá ningún mensaje específico. Para hacer esto, especifique el UID del mensaje con la opción –X.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

Diferencia entre cURL y wget

A veces, las personas confunden cURL y wget porque ambos son capaces de recuperar datos de un servidor. Pero esto es lo único que tienen en común.

Hemos mostrado en este artículo de lo que cURL es capaz. wget proporciona un conjunto diferente de funciones. wget es la mejor herramienta para descargar sitios web y es capaz de recorrer directorios y enlaces de forma recursiva para descargar sitios completos.

Para descargar sitios web, use wget. Si usa algún protocolo que no sea HTTP o HTTPS, o para cargar archivos, use cURL. cURL también es una buena opción para descargar archivos individuales de la web, aunque wget también lo hace bien.

Espero que encuentres útil el tutorial. Sigue regresando.


Linux
  1. 12 ejemplos de comandos IP para usuarios de Linux

  2. Ejemplos de comandos curl de Linux – Parte 2

  3. Comando killall de Linux para principiantes (8 ejemplos)

  4. Más de 15 ejemplos para el comando de actualización de yum

  5. 7 ejemplos de comandos Linux df

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos curl de Linux para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)

Comando de localización de Linux para principiantes (8 ejemplos)

16 ejemplos prácticos del comando Linux LS para principiantes

Comando mv de Linux explicado para principiantes (8 ejemplos)