GNU/Linux >> Tutoriales Linux >  >> Linux

Comandos cURL más utilizados y populares en la práctica

cURL, abreviatura de "Cliente para URL", es una herramienta de línea de comandos para transferir datos mediante varios protocolos. Este artículo tiene como objetivo proporcionar los comandos que se usan ampliamente y como una referencia útil.

Índice

  • Descargar un solo archivo
  • Guarde la salida de cURL en un archivo
  • Ocultar barra de progreso
  • Obtener varios archivos a la vez
  • Seguir encabezados de ubicación HTTP con la opción -L
  • Continuar/Reanudar una descarga anterior
  • Usar un proxy con o sin autenticación
  • Consultar encabezados HTTP
  • Subir archivos al servidor FTP
  • Descargar archivos del servidor FTP
  • Lista/Descarga usando rangos
  • Más información sobre el uso de la opción Verbose y Trace
  • Enviar correo utilizando el protocolo SMTP
  • Comprobación de compatibilidad con HTTP/2
  • Simular métodos HTTP
  • Realizar una solicitud POST con parámetros
  • Conclusión

Puede invocar curl comando desde su terminal sin pensar en formas de instalarlo, ya que viene preinstalado en la mayoría de los sistemas operativos basados ​​en Linux.

Hay una gran cantidad de casos de uso para curl, como:

  • Carga FTP
  • Soporte de proxy
  • Conexiones SSL
  • Publicación HTTP

cURL también admite el uso de todos los siguientes protocolos:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET y TFTP.

Descargar un solo archivo

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

curl https://www.gnu.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 https://www.gnu.org > gnu-org.html

Guardar la salida de cURL en un archivo

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

  • -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 my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html 

Como resultado, ahora la página gettext.html se guardará en el archivo llamado my-gettext.html . También puede notar que cuando ejecuta cURL con -o opción, muestra el medidor de progreso para la descarga de la siguiente manera.

Cuando usa cURL -O , 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 el terminal, se desactiva el Progress Meter, para evitar confusiones en la impresión. Podemos usar > , -o , -O opciones para mover el resultado a un archivo.

Ocultar barra de progreso

cURL por defecto muestra la barra de progreso. Para ocultarlo -s (--silent )se puede utilizar la opción.

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

Si por alguna razón eso no funciona en su plataforma, siempre puede redirigir stderr a /dev/null :

curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null

Obtener varios archivos a la vez

Por supuesto, podemos descargar varios archivos de una sola vez especificando las URL en la línea de comando.

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

Seguir encabezados de ubicación HTTP con la opción -L

Sin embargo, por defecto, 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.

Podemos insistir en cURL para seguir la redirección usando -L opción, como se muestra a continuación.

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

Continuar/Reanudar una descarga anterior

Usando cURL -C opción, 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 - , luego cURL encontrará desde dónde comenzar a reanudar la descarga. También podemos dar un desplazamiento -C <offset> . Los bytes de desplazamiento proporcionados se omitirán desde el principio para el archivo de origen.

Inicie una gran descarga usando curl y presiona Ctrl-C para detenerlo entre la descarga.

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

Usando curl -C - , podemos continuar la descarga desde donde la dejamos antes.

curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html

Usar un proxy con o sin autenticación

Si está detrás de un servidor proxy escuchando en el puerto 8080 en proxy.yourdomain.com, haga lo siguiente:

curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html 

donde puede omitir -U user:password si su proxy no requiere autenticación.

Consultar encabezados HTTP

Los encabezados HTTP permiten que el servidor web remoto envíe información adicional sobre sí mismo junto con la solicitud real. Además, esto proporciona al cliente detalles sobre cómo se está manejando la solicitud.

Para consultar los encabezados HTTP de un sitio web, haga lo siguiente:

curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en

Subir archivos al servidor FTP

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

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

Como resultado, 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.server.com

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

curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.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 mynewfile.txt .

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

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/mysql.php

El comando anterior descargará el mysql.php archivo del servidor ftp y guárdelo 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.

Lista/Descarga 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 http://ftp.us.debian.org/debian/pool/main/[a-z]/

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

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

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

curl -v https://www.gnu.org

El comando about generará lo siguiente:

*   Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=emacs.org
*  start date: Jun 17 09:07:40 2020 GMT
*  expire date: Sep 15 09:07:40 2020 GMT
*  subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
< 
...

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.

Comprobación de compatibilidad con HTTP/2

Si tiene la última versión de cURL, puede usar --http2 opción para verificar si una URL en particular es compatible con el nuevo protocolo HTTP/2. Por lo tanto, si el sitio admite HTTP/2, verá HTTP/2.0 200 en el encabezado en lugar de HTTP/1.1 200 .

curl -I --http2 https://www.opensource.com

Simular métodos HTTP

El GET El método se utiliza para recuperar recursos de una URL en particular. El simple curl https://www.gnu.org/ el comando usará GET como el método HTTP predeterminado, sin embargo, también se puede especificar usando --request GET-X GET .

curl --request GET https://www.gnu.org

El POST El método se utiliza para publicar información en un servidor web (por ejemplo, un comentario en un foro). Esto se puede especificar usando --request POST-X POST .

curl --request POST https://yourwebsite.com

El DELETE El método elimina el recurso del servidor web asociado con una URL específica. Esto se puede especificar usando --request DELETE-X DELETE .

curl --request DELETE https://yourwebsite.com

El PUT El método crea o reemplaza un recurso basado en los datos que el cliente envía al servidor web. (por ejemplo, crear una nueva página web o actualizar una existente). Esto se puede especificar usando --request PUT-X PUT .

curl --request PUT https://yourwebsite.com

Realizar una solicitud POST con parámetros

El siguiente comando enviará el animal1 y animal2 parámetros, junto con sus valores correspondientes, a https://yourdomain.com/animals.php

curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php

Puede utilizar este consejo para simular el comportamiento de un formulario HTML normal.

Conclusión

En esta publicación, explicamos qué es cURL y lo que puedes hacer con algunos comandos básicos. Para obtener más información sobre cURL, puede visitar el sitio web del proyecto.


Linux
  1. Comandos de Linux:descripción general y ejemplos

  2. 40 comandos básicos de Linux utilizados con frecuencia

  3. Los 10 mejores y más populares temas de iconos para Linux

  4. Comandos de Linux:trabajos, bg y fg

  5. Los 7 espacios de nombres de Linux más utilizados

Busque, estudie y practique los comandos de Linux sobre la marcha usando Tldr++

La diferencia entre más, menos y la mayoría de los comandos

Cómo encontrar los comandos más utilizados en Linux

Más de 40 comandos de Ubuntu 20.04 más utilizados

Los comandos FFmpeg más útiles para la conversión de audio y video

90 comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux