Hay varias formas de controlar y comunicarse con datos en la terminal de Linux y curl
es la mejor manera de hacerlo. curl
es una herramienta de línea de comandos que puede usar para transferir datos desde o hacia un servidor. Puedes usar el curl
Comando para descargar y cargar datos utilizando cualquiera de los protocolos admitidos, que comprende FTP, HTTP, SFTP, HTTPS y SCP. Curl tiene una variedad de características, incluida la capacidad de restringir el ancho de banda, reanudar transferencias, autenticación de usuarios, compatibilidad con servidores proxy y mucho más.
A continuación se muestra la lista de protocolos compatibles actualmente con curl
:
- FTP/FTPS
- Gopher
- HTTP
- HTTP/2
- SMTP/SMTPS
- IMAP/IMAPS
- PYME
- POP3/POP3S
- RTMP
- SCP
- SFTP
- RTSP
- LDAP/LDAPS
- Telnet y TFTP
- RTSP
Las funciones adicionales incluyen:
- Autenticación de usuario y contraseña
- Básico
- Digerido simple
- NTLM
- CRAM-MD5
- Kerberos
- Negociar
- Galletas
- Tunelización de proxy
- Reanudar la operación de transferencia de archivos
- Certificados SSL
- Carga de formularios HTTP y HTTPS
wget
y curl
a menudo se comparan porque su funcionalidad se superpone hasta cierto punto. Ambas herramientas pueden recuperar contenido de Internet, pero wget tiene más funciones como web scraping, descargas recursivas y es más fácil de usar. wget se considera una mejor opción si solo desea descargar archivos en la terminal.
Aprendiendo curl
Los conceptos básicos de comandos lo ayudarán a cargar y descargar archivos con procedimientos avanzados de autenticación HTTP. Además, wget
solo admite FTP y HTTP(S), mientras que curl
admite muchos más protocolos.
De eso se trata curl
dominio. Ahora saltemos directamente a la terminal.
Instalación de 'curl' en Linux
Si no tienes curl
en su sistema Linux, instálelo utilizando el siguiente comando. De lo contrario, omita los pasos de instalación y continúe con los ejemplos.
sudo apt-get update
sudo apt-get install curl -y
Ahora, verifica el curl
está disponible en su sistema comprobando su versión:
curl --version
Ejemplos de uso de 'curl'
Podemos hacer muchas cosas geniales usando curl
. Echemos un vistazo a algunos de ellos.
Obteniendo IP externa del servidor
Hay un recurso increíble en Internet que le permite obtener su dirección IP de Internet:https://ifconfig.me (nombrado en la gloria de la famosa utilidad de configuración de red de Linux:ifconfig
) ).
Si enviaste una solicitud HTTP a ese sitio usando curl, te devolverá la dirección IP externa en la terminal en forma de cadena simple:
curl https://ifconfig.me
Entonces, puede poner fácilmente este resultado en la variable bash:
MY_EXTERNAL_IP=$(curl -s https://ifconfig.me)
echo $MY_EXTERNAL_IP
Aquí está el resultado:
Aquí, -s
El argumento permite evitar la salida de progreso de descarga curl:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12 100 12 0 0 181 0 --:--:-- --:--:-- --:--:-- 181
Pronóstico del tiempo
¿Quieres sentirte como un hacker y mostrar la información meteorológica directamente en la terminal? Puedes hacerlo usando curl
!
curl http://wttr.in/LOCATION
Guardar la salida 'curl' en un archivo de texto
Puede guardar la salida del curl
comando al archivo especificado.
Este es un ejemplo de cómo guardar la salida de la API JSON (API de demostración de StarWars) en el archivo:
curl https://swapi.dev/api/planets/1/ -o Tatooine.json
curl
es lo suficientemente inteligente como para detectar la descarga de archivos binarios. Este es un ejemplo de la descarga de uno de los software de administración de infraestructura como código de código abierto más populares, Terraform (obtenga más información sobre Terraform):
curl https://releases.hashicorp.com/terraform/0.15.0/terraform_0.15.0_linux_amd64.zip -o terraform_0.15.0_linux_amd64.zip
Descargando varios archivos
Puedes usar curl
para descargar varios archivos a la vez. Solo agrega -o
argumento tantas veces como necesites.
curl -o https://example.com/files/file-1 -o file-2 https://example.com/files/file-2 -o file-3 https://example.com/files/file-3
Limitación de la velocidad de descarga
Otra característica útil de curl
es la restricción de la velocidad de descarga de archivos. Puedes hacerlo usando el --limit-rate
argumento y especificando la tasa de velocidad:
curl --limit-rate 1M -O https://releases.hashicorp.com/terraform/0.15.0/terraform_0.15.0_linux_amd64.zip
La velocidad dada se mide en bytes/segundo, a menos que se agregue un sufijo. Agregar 'k' o 'K' contará el número como kilobytes, 'm' o M' lo convierte en megabytes, mientras que 'g' o 'G' lo convierte en gigabytes.
Lista de URL de descarga
En este ejemplo, descargaremos todos los archivos enumerados en el archivo de texto. Para hacer eso necesitas usar una combinación de xargs
con curl
comandos:
xargs -n 1 curl -O < urllists.txt
Aquí hay una salida:
Autenticación básica
Puedes usar el -u
argumento para proporcionar el nombre de usuario y la contraseña para la autenticación HTTP básica (autenticación básica):
curl -u username:password -O https://example.com/files/README
Obtención de los encabezados de URL
Los encabezados HTTP son pares clave-valor separados por dos puntos que contienen información como el tipo de contenido del recurso solicitado, el agente de usuario, la codificación, etc. Con la solicitud o respuesta, los encabezados se transfieren entre el cliente y el servidor. Para obtener la información de los encabezados de cualquier sitio web, use -I
argumento:
curl -I https://hands-on.cloud
Uso de cookies
En solicitudes posteriores al mismo sitio web, es posible que deba utilizar las cookies.
Para guardar las cookies recibidas del servidor web, utilice el siguiente comando:
curl -s -o /dev/null -c google_cookies.txt 'https://www.google.com'
Aquí los argumentos son:
-s
– modo silencioso, curl no imprime la información de progreso de la descarga-o /dev/null
– no imprima la salida de la página web en el terminal-c google_cookies.txt
– guardar información de cookies en el archivo
Para usar las cookies recibidas de la solicitud anterior, use el siguiente comando:
curl -b google_cookies.txt 'https://www.google.com'
Comprobando la compatibilidad con HTTP/2
Utilice el -I
, --http2
y -s
opciones juntas para verificar si el sitio especificado admite encabezados HTTP/2:
curl -I --http2 -s https://hands-on.cloud/ | grep HTTP
Resumen
En este artículo, cubrimos los ejemplos más utilizados del uso de curl
dominio. Esperamos que este artículo le permita comenzar con esta poderosa utilidad. Si te gusta el artículo, ¡ayúdanos a difundirlo por todo el mundo!