El curl mando transfiere datos hacia o desde un servidor de red. Está disponible de forma predeterminada en todos los sistemas basados en Linux. Se usa comúnmente 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 explícitamente, 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 utilizar curl comando y su básico opciones con ejemplos.
Si no encuentras curl instalado en sus sistemas Linux, utilice los siguientes comandos:
Instalar curl en Ubuntu / Debian
$ sudo apt install curl
Para instalar Curl en CentOS /Fedora
$ sudo yum install curl
Cómo utilizar curl mando
Sintaxis de curl:
$ curl [options] [URL]
- opciones – El curl opciones que comienzan con uno o dos guiones.
- URL: URL del servidor remoto.
El comando Curl seguido de la URL del sitio web muestra el código fuente del sitio web en la salida estándar.
Para imprimir el código fuente de https: //example.con:
$ curl https://example.com
Puede pasar la URL como entrada a la curl comando y redirigir la salida a un archivo.
Para example:
$ curl https://exmaple.com > example.html
Descarga un archivo con el mismo nombre
A descargar un archivo y guardarlo con el mismo nombre, use la opción -O.
Para example para descargar el archivo iso de Ubuntu 20.04, escriba:
$ curl -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Producción:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
5 2743M 5 156M 0 0 49.9M 0 0:00:54 0:00:03 0:00:51 49.9M
Verifique el archivo descargado:
$ ls
ubuntu-18.04.2-desktop-amd64.iso
$
A descargar un archivo y guárdalo con un nombre personalizado, use la opción -o.
$ curl -o ubuntu-20-04.iso https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Para verificar, use el comando ls:
$ ls
ubuntu-20-04.iso
Descarga varios archivos
A descargar varios archivos a la vez, utilice varios indicadores -O seguidos de la URL de los archivos.
Sintaxis:
$ curl -O [URL1] -O [URL2] -O [URL3] ...
Para example:
$ curl -O localhost/file.pdf -O localhost/file1.pdf
Para guardar varios archivos con nombres diferentes, use la opción -o anidada.
Para example:
$ curl -o file2.pdf localhost/file.pdf -o file3.pdf localhost/file1.pdf
Descargue archivos que tienen secuencia numérica, escriba:
$ curl ftp://ftp.example.com/file[1-30].jpeg
Descargar / cargar a través de FTP
Para acceder a un servidor FTP protegido con el curl comando necesita 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.example.com/
Para descargar el archivo use:
$ curl -u USERNAME:PASSWORD ftp://ftp.example.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
Subir archivo
Curl emula un formulario completo en el que un usuario ha presionado el botón enviar, usando la opción -F.
Para example para POST datos utilizando Content-Type multipart / form-data:
$ curl -F @field_name=@path/to/local_file <upload_URL>
Reanudar una descarga interrumpida
Si un la descarga fue interrumpida por alguna razón, puede reanudarlo usando la opción -C – para reanudar la descarga comenzando donde la dejó.
$ curl -C - -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Producción:
** 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
Curl para obtener encabezados HTTP
Para obtener el encabezado HTTP solo use el -I
opción. Cuando se utiliza en un archivo FTP o FILE, muestra el tamaño del archivo y la hora de la última modificación únicamente.
Para example:
$ curl -I redhat.com
HTTP/1.0 301 Moved Permanently
Location: https://www.redhat.com/en
Server: BigIP
Connection: Keep-Alive
Content-Length: 0
Curl para seguir la redirección
A veces, es posible que encuentre una URL con errores como “Movido” o “Movido permanentemente”. Esto suele ocurrir cuando el Redireccionamientos de URL a alguna otra URL.
Para example, desde el resultado, google.com redirecciona 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="https://www.google.com/">here</A>.
</BODY></HTML>
Decir curl para seguir la redirección, use la opción -L.
$ curl -L google.com
Caso de uso 1: si la URL desde donde está intentando descargar los archivos tiene alguna redirección 301, es posible que no descargue el archivo. Para example, si la URL tiene redirección de http a https, debe usar la opción -L para seguir la redirección y descargar.
$ curl -o test.txt -L https://www.test.com
Caso de uso 2: para comprobar la compatibilidad con un servidor remoto http2 use -L seguido de –http2. Para example
$ curl -I --http2 -s https://linoxide.com/ | grep HTTP
Si el resultado muestra HTTP / 2 200, indica que el servidor remoto admite HTTP / 2.
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 https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Omitir certificados SSL
Por defecto, curl Verifique cada conexión SSL que haga. A veces, tiene problemas para descargar archivos debido a un error de SSL / TLS o al punto final de la API de prueba con un certificado autofirmado o uno no válido. En tales casos, omita SSL con la opción -k.
$ curl -o -k https://www.test.com
Verificar certificado autofirmado
Para verificar su certificado autofirmado en curl, use la opción –cacert.
curl --cacert myssl.crt -O https://test.com/file.tgz
Especificar cadena de agente de usuario
A especificar usuario-agente cadena para enviar al servidor HTTP utilice la opción -A.
Caso de uso: algún bloque de servidor http curl user-agent para descargar archivos, en tales situaciones curl permite especificar usuario-agente. Para example:
$ 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 https://localhost/file1.pdf
Especificar proxy
Usar el proxy HTTP especificado para descargar use la opción -x. Si no se especifica el número de puerto, se asume en el puerto 1080.
Para example para descargar el archivo usando el proxy específico 192.168.35.8 en el puerto 8080, escriba:
$ curl -x 192.168.35.8:8080 -O https://example.com/
file01.tar.gz
Utilice la opción -U o –proxy-user para especificar el nombre de usuario y la contraseña de autenticación.
Para example:
$ curl -x 192.168.35.8:8080 -U user:password -O https://example.com/file01.tar.gz
Para almacenar / pasar cookies
A escribir cookies a un archivo que se descarga cuando accede a un recurso, use la opción –cookie-jar o -c seguida del nombre del archivo de texto para almacenarlo.
Para example para almacenar cookies de https://www.nytimes.com/ al archivo llamado cookies.txt, utilice:
$ curl -c cookies.txt https://www.nytimes.com/index.html -O
Puedes decir curl reutilizar cookies recibido antes usando la opción -b o –cookie seguido del nombre de archivo que contiene las cookies o una cadena. Esto pasará los datos al servidor HTTP como una cookie. Por defecto, curl no utiliza cookies para solicitar recursos.
PS curl -b cookies.txt https://www.nytimes.com
Tiempo total para una solicitud
Para obtener el Tiempo Total curl tomó para que una solicitud sea exitosa, use la opción -w.
Para example para imprimir el tiempo total después de que se complete la transferencia para descargar el archivo iso de ubuntu 20.04 después de que se complete la transferencia.
$ curl -w "%{time_total}n" -o /dev/null -s https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Producción:
276.044317
Resolución de nombre local
Para probar la versión local de un recurso para example Opción de resolución de uso de punto final de API. Estos desarrolladores para probar una API para la implementación.
$ curl --resolve www.example.com:80:localhost https://www.example.com/
Medidor de progreso
Curl de forma predeterminada muestra un medidor de progreso al cargar o descargar datos. Indicará información como el tamaño total, cuánto% y tamaño recibido, tiempo dedicado, tiempo restante, velocidad actual, etc.
Para mostrar un progreso alternativo uso del medidor – # o –progress-bar. Para example:
$ curl -# -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
############### 20.9%
Para deshabilitar el medidor de progreso, use –silent o -s.
$ curl -O --silent
https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
Conclusión
En este tutorial, aprendimos a usar curl comando para transferir datos en Linux. Si quieres aprender más sobre curl visita 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:
- httpie: un cliente de línea de comandos HTTP alternativo de Curl en Linux