GNU/Linux >> Tutoriales Linux >  >> Linux

Aprenda a usar el comando CURL en Linux con estos ejemplos

¿Qué es CURL?

CURL es una herramienta para la transferencia de datos. También está disponible como biblioteca para desarrolladores y como CLI para casos de uso basados ​​en terminales. Ambos tienen el mismo motor interno (la verdad es que la herramienta CLI es solo el programa que usa la biblioteca debajo del capó).

CURL funciona con todos los protocolos que haya utilizado. Dirígete a este sitio para verificar si CURL funciona con tu protocolo de destino o no.

¿Qué puede hacer CURL?

Hmm… Todo lo relacionado con la transferencia de datos. Todos deben haber usado un navegador. Incluso ahora, estás leyendo este artículo a través de tu navegador. Lo que hace el navegador, solicita una página y la obtiene como respuesta. Puede escribir y leer cookies. Y luego lo procesa (mostrando el contenido, las imágenes y ejecutando scripts JS).

CURL puede hacer todo lo que un navegador excepto la representación de la última parte porque no está relacionada con la transferencia de datos.

Como resumen, CURL puede descargar páginas HTML, llenar formularios HTML y enviarlos, descargar archivos de un servidor FTP/HTTP y cargar archivos al mismo y leer/escribir cookies.

Esto lo convierte en una excelente herramienta para usar en secuencias de comandos, depuración y análisis forense, etc.

Ejemplos de comandos de curl

Veamos qué puedes hacer con Curl.

1. Obtener una respuesta de un servidor

Todo desde el servidor es una respuesta a la solicitud. Así que obtener una página HTML es lo mismo que descargar un archivo.

Para obtener una respuesta HTML de http://info.cern.c,

curl http://info.cern.ch/

Para obtener la lista de publicaciones como respuesta de un servidor ( https://jsonplaceholder.typicode.com/posts),

curl https://jsonplaceholder.typicode.com/posts

Como sabemos cómo obtener una respuesta de un servidor, puede descargar un archivo (por ejemplo, el logotipo de Google).

curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

El comando anterior descargará datos de imágenes binarias que no puede ver en la terminal. Debe guardarlos y luego usar un visor de fotos para verlos.

Tenga en cuenta que se pueden colocar varios indicadores de opción en cualquier parte del comando en lugar del orden estricto. Así que no se preocupe si colocó alguna opción en el último mientras que los ejemplos tenían la bandera al principio.

2. Guarde el archivo con un nombre de archivo predeterminado

Cada archivo que se sirve en Internet tiene un nombre de archivo. Para usar el mismo nombre de archivo que el nombre de archivo descargado, use la marca -O.

curl -O http://www.google.com/robots.txt

3. Guarde el archivo con un nombre personalizado

Para guardar el nombre del archivo con su propio nombre personalizado, use la marca -o seguida (estrictamente) por un nombre personalizado.

curl -O http://www.google.com/robots.txt googleRobots.txt

4. Descargar varios archivos

Para descargar varios archivos, sepárelos con un espacio en blanco.

curl url1 url2 url3

Si desea usar el indicador -O para todas las URL, use

curl url1 url2 url3 -O -O -O 

Se debe realizar la misma solución para cualquier indicador. Esto se debe a que la primera vez que aparece un determinado indicador es para la primera URL, el segundo indicador es para la segunda URL y así sucesivamente.

5. Descargar una variedad de archivos

curl tiene la capacidad incorporada de descargar una variedad de archivos del servidor. Esto se puede ilustrar con el siguiente ejemplo.

curl http://www.google.com/logo/logo[1-9].png

El comando anterior descarga archivos desde logo1.png, logo2.png, logo3.png y hasta logo9.png.

6. Descargar un archivo solo si es el último

Para descargar un archivo solo si la hora de modificación del archivo es más reciente que la hora dada.

curl url -z "DD MMM YY MM:HH:SS"

7. Reanudar descarga

Si ya transfirió parcialmente un archivo, puede reanudar la transferencia usando el indicador -C. El desplazamiento a partir del cual debe continuar la transferencia debe pasarse como parámetro al indicador -C.

curl -C 1024 http://seeni.linuxhandbook.org/files/largeFile.mpv -O

8. Subir un archivo

Para cargar un archivo en el servidor, se debe usar el indicador -T seguido de la ruta del archivo en su sistema local.

curl -T uploadFile.txt http://upload.linuxhandbook.org/files

9. Eliminar un archivo

Para eliminar un archivo llamado deleteFile.txt en un servidor, se puede usar el indicador -X que está destinado a cualquier verbo/método HTTP (como GET, POST, PUT, DELETE, PATCH). La mayoría de los servidores FTP tendrán el método DELETE configurado, si no todos los métodos HTTP avanzados.

curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt

También puede modificar el comando anterior para que cualquier método HTTP realice la tarea correspondiente. Por ejemplo, si su servidor permite el método TRUNCATE (este es un método HTTP inventado, no uno estándar) que elimina solo el contenido del archivo y no el archivo, se puede usar un comando similar al siguiente.

curl -X  TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump

Los mencionados anteriormente son los principales usos del rizo. Pero puede haber dificultades que deben ser combatidas, como redireccionamientos, autenticación de usuarios, certificados SSL, etc. Podemos llamarlos complementos, ya que solo son opcionales pero siguen siendo cruciales para ciertos propósitos. Veamos algunos de esos complementos y cómo manejarlos con curl en la siguiente sección.

10. Evita los redireccionamientos

Cuando solicita http://www.google.com, solo se le mostrará la página regional, como www.google.co.in. Esto se hace con la ayuda de redireccionamientos (paquetes HTTP con códigos de estado en el rango 300-399).

Puedes evitar los redireccionamientos con la opción L.

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

11. Autenticación

Cuando el servidor está configurado para atender solo a ciertas personas con credenciales, se les proporcionará un nombre de usuario y una contraseña. Uno puede iniciar sesión con la ayuda de la bandera -u.

curl -u username:password http://seeni.linuxhandbook.org/files/tasks.txt

12. Limitar la transferencia de datos

Si desea imponer un límite de transferencia de datos, use el indicador de tasa de límite. El siguiente comando intenta descargar el archivo con un límite de velocidad de 10K.

curl --limit-rate 10K http://seeni.linuxhandbook.org/files/logoDetails.tgz

13. Mostrar/Ocultar estado de transferencia

Si la respuesta se redirige desde el terminal, como la descarga, la carga, curl muestra automáticamente el estado/medidor de progreso de la transferencia.

Si no desea ver el medidor de progreso, simplemente agregue el comando con el indicador -s. No se mostrará el progreso de la respuesta dirigida a la terminal.

14. Ignorar certificados SSL

¿Recuerda las situaciones en las que necesita otorgar una excepción de certificado de seguridad para visitar algunos sitios web? Si confía en las fuentes y desea realizar una transferencia de datos, puede ignorar la validación del certificado SSL utilizando el indicador -k.

curl -k https://notSoSecure.org/files/logoDetails.tgz

15. Obtener información de encabezado también

Para mostrar la información del encabezado junto con los datos transferidos, use el indicador -i.

curl -i http://www.google.com/robots.txt

16. Obtener información de encabezado solamente

Si solo desea los encabezados y no los datos, use el indicador -I

curl -I http://www.google.com/robots.txt

17. Cambiar agente de usuario

Algunos sitios web y servidores no permiten que ciertos tipos de dispositivos accedan a sus sistemas. Pero, ¿cómo saben que estamos usando un tipo específico de dispositivo? Esto se debe al campo de encabezado HTTP del agente de usuario. Podemos cambiar este agente de usuario con el indicador -A.

curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png

18. Envío de datos al servidor

Si el servidor necesita algunos datos, como token o clave API, use el indicador -d para enviar los datos. Los datos que deben enviarse deben seguir la bandera en el comando. Uno puede usar "&" para combinar múltiples datos. Esto generalmente se hace mediante solicitudes GET y POST en los navegadores. Esta es una de las formas en que puede enviar la información de su formulario.

curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent

19. Escribir cookies en un archivo

Las cookies son una pequeña información que permite mantener una sesión con un protocolo HTTP sin estado. Si desea obtener más información sobre las cookies, consulte este excelente recurso.

Para escribir cookies en un archivo, se debe usar el indicador -c seguido del nombre del archivo de la cookie.

curl -c googleCookie.txt http://www.google.com/files

20. Lectura de cookies de un archivo

Para leer una cookie del archivo, se puede usar el indicador -b seguido del nombre de archivo de la cookie.

curl -b googleCookie.txt http://www.google.com/files

Tenga en cuenta que el indicador -b solo lee la cookie del archivo. Entonces, si el servidor reenvía otra cookie, es posible que deba usar la opción -c para escribirlas.

21. Iniciar una nueva sesión

Si desea iniciar una nueva sesión descartando las cookies, use el indicador -j. Comienza una nueva sesión incluso si ha proporcionado el archivo de cookies para leer con el indicador -b.

curl -b googleCookie.txt http://www.google.com/files -j

¡Felicidades! Llegaste hasta el final. Si encuentra útil este artículo, compártalo con sus amigos y síganos en las redes sociales. Si tiene alguna sugerencia sobre este artículo o cualquier otro tema, no dude en dejarla a continuación.


Linux
  1. Comando wc Linux con ejemplos

  2. Cómo usar el comando IP en Linux con ejemplos

  3. Comando alias de Linux:cómo usarlo con ejemplos

  4. Ordenar comando en Linux con ejemplos

  5. Comando chattr en Linux con ejemplos

Comando WC de Linux con ejemplos

Aprenda a usar el comando Chmod con estos ejemplos

Uso del comando Linux mv con ejemplos

Comando de montaje de Linux con ejemplos

Comando gawk de Linux con ejemplos

Comando make de Linux con ejemplos