Como baixar um arquivo de URL no Linux

Como baixar um arquivo de URL no Linux

Normalmente, alguém baixaria um arquivo com uma URL terminando na extensão do arquivo.

Para baixar o Ubuntu ISO, seria simples

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

No entanto, me deparei com um site que suspeito que usa ASP.Net/IIS.

Um link para uma ISO está neste formato(Removi o conteúdo do link no caso de ... políticas):

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

Não tenho certeza de como fazer o download, pois ele tem o MD5 e o tempo de expiração como parâmetros e, portanto, o wget baixa apenas uma página da web, não este ISO.

Alguma sugestão?

Responder1

Usar

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

Explicação: há o caractere "&" no URL. No Linux e em sistemas similares, isso o torna um processo em segundo plano.

A solução é colocar o URL entre aspas duplas ( ") para que seja tratado como um argumento.

Responder2

Se você está apenas tentando obter um nome de arquivo razoável para um URL complexo, você pode usar odocumento de saídaopção.

-O file
--output-document=file

Qualquer um desses formulários funcionará.

Conforme observado anteriormente, certifique-se de que nenhum dos caracteres especiais na URL esteja sendo interpretado pelo analisador de comando.

Responder3

Existem duas maneiras de fazer isso usandoOndulação.

Neste primeiro método você usaria o -Osinalizador para gravar o arquivo com base no nome remoto da URL; neste caso, provavelmente gravaria o arquivo no sistema como IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899; observe como o valor da URL está contido entre aspas duplas &e ?pode ser mal interpretado como comandos Bash:

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

Embora esse método “funcione” tecnicamente, o nome do arquivo é, na melhor das hipóteses, confuso. Portanto, neste outro método, você usaria o redirecionamento de saída - >seguido por um nome de arquivo após o URL - para enviar o conteúdo do arquivo para um arquivo chamado IMAGENAME.ISO:

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

Então, se você me perguntar, o segundo método funciona melhor para o uso mais comum. Observe também o -Lsinalizador sendo usado em ambos os comandos; esses comandos dizem ao Curl para seguir quaisquer links de redirecionamento que um URL de download de arquivo possa ter, já que muitas vezes os arquivos nos serviços de download são redirecionados algumas vezes antes de chegar ao arquivo de carga útil de destino.

informação relacionada