OSX/IOS

Usar cURL para descargar archivos de forma remota desde la línea de comando

Descargar con curl

La poderosa herramienta de línea de comandos curl se puede utilizar para descargar archivos desde casi cualquier servidor remoto. Los usuarios de la línea de comandos desde hace mucho tiempo saben que esto puede ser útil para una amplia variedad de situaciones, pero para simplificar las cosas, muchos encontrarán que descargar un archivo curl a menudo puede ser una alternativa más rápida a usar un navegador web o un cliente FTP desde Mac. GUI de OS X (o Linux). Esto es útil para situaciones locales, pero es especialmente valioso si se encuentra en una situación en la que necesita descargar algo a una Mac remota cuando está conectado a través de SSH.

A los efectos de este pasaje, nos centraremos principalmente en descargar archivos de los dos protocolos HTTP y SFTP que se encuentran con frecuencia, aunque debe tenerse en cuenta que cURL admite múltiples protocolos. Aunque curl es fácil de usar, se recomienda que tenga algún conocimiento de la línea de comandos.

Descargar archivos de coincidencia exacta con Curl -O

El uso de la bandera -O en mayúscula con curl descarga el archivo desde el servidor remoto, mientras se mantiene el nombre exacto del archivo, la sintaxis básica para esto es la siguiente:

curl -O [url]

Esto significa que si el archivo URL especificado se llama «sample.zip», se descargará con el nombre de archivo «sample.zip» y si el archivo tiene un nombre enorme y complicado, como «LongExampleFileNameForOSXDaily-v-1-3 – 51-revision-515b12-readme.txt ”en el servidor remoto, se guardará con ese nombre exacto en la máquina local. Los nombres de archivo más largos a menudo se tratan mejor con el indicador -o que con el indicador -O, que cubriremos en breve.

Los lectores comunes pueden recordar que usamos el comando curl -O al explicar cómo extraer contenido de audio real de un archivo de transmisión m3u.

El inicio de cualquier descarga de curl muestra el porcentaje transferido, el tiempo dedicado a la descarga y el tiempo restante y la velocidad de transferencia.

Descarga de un archivo curl

La captura de pantalla proporciona una mejor representación que el ejemplo siguiente, pero se parece a esto:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Con la pantalla de velocidad de transferencia, puede redirigir la salida curl a / dev / null y usarla para probar la velocidad de su conexión a Internet, pero el comando wget tiene una barra de transferencia más fácil de leer y seguir, por lo que wget es más adecuado para esa tarea.

Guardar un archivo remoto con otro nombre con curl -o

El uso de una pequeña bandera -o le permitirá especificar un nombre de archivo diferente para el archivo descargado de cómo se nombra en el servidor remoto. Esto puede ser útil para reducir el nombre de archivos extendidos o simplemente para etiquetar algo para que sea más fácil encontrarlo por su cuenta. La sintaxis general sería:

curl -o [shortname] [url]

Por ejemplo, si desea guardar un archivo IPSW iOS que encontró en los servidores de Apple sin tener un nombre completo, puede usar lo siguiente:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5,3_7.0.4_11B554a_Restore.ipsw

Esto descargará el archivo “iPhone5,3_7.0.4_11B554a_Restore.ipsw”, pero con un nombre más corto como “iPhone5C-704.ipsw” de manera más significativa.

Si prefiere no guardar el archivo en el directorio de trabajo actual, especifique una ruta como parte del nombre del archivo de la siguiente manera:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Descarga varios archivos simultáneamente con curl

cURL puede descargar fácilmente varios archivos a la vez, todo lo que tiene que hacer es especificar varias URL de la siguiente manera:

curl -O [URL 1] [URL 2] [URL 3]

Para archivos con diferentes nombres o alojados en diferentes servidores o en diferentes rutas de directorio, use la URL completa, por ejemplo:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

Por otro lado, si los nombres de los archivos que se descargarán usan nombres incrementales, puede usar paréntesis para especificar un intervalo de descarga, de la siguiente manera:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

Esto tomaría el control de los archivos fdl-1.1.txt, fd1-1.2.txt y fd1-1.3.txt todos al mismo tiempo, sin la necesidad de especificar cada URL única. Por supuesto, esto solo funciona si los archivos están juntos en el mismo directorio y en el mismo dominio.

Autenticación curl

También puede pasar la autenticación cURL usando el indicador -u:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Tenga en cuenta que el historial de bash almacenará la contraseña en texto plano cuando la use con un nombre de usuario y contraseña específicos, por lo que no se recomienda para la mayoría de situaciones. Puede omitir esto colocando un espacio delante del «bucle». Si no está utilizando la barra espaciadora para prefijar su pedido, probablemente desee borrar su historial de pedidos después para estar seguro.

Protocolos y uso de curl compatibles más allá de HTTP y FTP

Como se mencionó anteriormente, el uso de cURL va mucho más allá de HTTP y FTP, ya que ingresar manualmente la página curl menciona protocolos adicionales en la descripción:

curl es una herramienta para transferir datos hacia o desde un servidor usando uno de
protocolos compatibles (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET y TFTP).

Además, encontrará que el bucle también se puede usar para solicitudes PUT y POST, cookies, proxies, túneles, repeticiones de descarga e incluso recuperar información de encabezado HTTP o cambiar un agente de usuario (suplantación efectiva) sin tener que usar un navegador web.

Como la mayoría de las utilidades de línea de comandos, puede aprender más sobre curl llamando a la página de manual correspondiente con el comando «man curl».

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar