Cómo descargar un archivo desde una URL en Linux

Cómo descargar un archivo desde una URL en Linux

Por lo general, se descargaría un archivo con una URL que termina en la extensión del archivo.

Para descargar Ubuntu ISO, uno sería simple

wget http://releases.ubuntu.com/14.04.3/ubuntu-14.04.3-desktop-amd64.iso

Sin embargo, me encontré con un sitio que sospecho que usa ASP.Net/IIS.

Un enlace a una ISO está en este formulario.(Eliminé el contenido del enlace en caso de... políticas):

http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899

No estoy seguro de cómo descargar esto ya que tiene el MD5 y el tiempo de caducidad como parámetros, por lo que wget solo descarga una página web, no esta ISO.

¿Alguna sugerencia?

Respuesta1

Usar

wget "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899"

Explicación: Hay un carácter "&" en la URL. En Linux y sistemas similares, esto lo convierte en un proceso en segundo plano.

La solución es encerrar la URL entre comillas dobles ( ") para que se trate como un solo argumento.

Respuesta2

Si solo está intentando obtener un nombre de archivo razonable para una URL compleja, puede usar eldocumento de salidaopción.

-O file
--output-document=file

Cualquiera de estas formas funcionará.

Como se señaló anteriormente, asegúrese de que el analizador de comandos no interprete ninguno de los caracteres especiales de la URL.

Respuesta3

Hay dos maneras de hacer esto usandoRizo.

En este primer método, usaría la -Obandera para escribir el archivo según el nombre remoto de la URL; en este caso lo más probable es que escriba el archivo en el sistema como IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899; observe cómo el valor de la URL está contenido entre comillas dobles desde &y ?puede malinterpretarse como comandos Bash:

curl -O -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899";

Si bien ese método técnicamente "funciona", el nombre del archivo es, en el mejor de los casos, confuso. Entonces, en este otro método usarías la redirección de salida ( >seguido de un nombre de archivo después de la URL) para enviar el contenido del archivo a un archivo llamado IMAGENAME.ISO:

curl -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899" > "IMAGENAME.ISO";

Entonces, si me preguntas, el segundo método funciona mejor para la mayoría de los usos promedio. Observe también la -Lbandera que se utiliza en ambos comandos; Ese comando le dice a Curl que siga cualquier enlace de redirección que pueda tener una URL de descarga de archivos, ya que muchas veces los archivos en los servicios de descarga se redireccionan varias veces antes de llegar al archivo de carga útil de destino.

información relacionada