Como uso o wget para obter um arquivo com um nome específico?

1

Estou usando o bash no Amazon Linux.

Quando visito o seguinte URL em um navegador, link , Eu recebo um arquivo, firefox-56.0.1.tar.bz2. No entanto, quando eu uso wget, o arquivo que downloasd tem um "index.html" no título, embora pareça o mesmo arquivo. Então eu tentei

wget -r --no-parent --reject "index.html*" -nH --cut-dirs=7 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

mas agora nenhum arquivo é baixado. Como posso baixar o arquivo usando o wget (ou alguma outra ferramenta de linha de comando) e fazer com que o arquivo seja intitulado da mesma forma quando visito essa URL em um navegador?

    
por Dave 18.10.2017 / 18:31

3 respostas

2

Nesse caso, você deseja confiar no nome do servidor que está sendo enviado nos cabeçalhos, sem essa diretiva wget usará o nome do arquivo na URL ...

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" --trust-server-names

Claro, para que isso funcione, todos os servidores precisam enviar um nome de arquivo para qualquer arquivo que está sendo enviado / gerado. Alguns scripts não fazem isso - se for esse o caso, você ainda obterá "index.html" que, na verdade, é o arquivo.

O que você faz nesse caso é usar a opção -O , e especificar o nome do arquivo desejado no final

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" -O latest-firefox.tar.bz2

É claro que você precisa saber que tipo de arquivo é, etc. para esta parte funcionar.

    
por 18.10.2017 / 18:42
1

Você pode instalar o cliget addon para firefox . Depois de pressionar o link, ele gerará um comando curl em Download with cURL . Nesse caso, seria algo assim:

curl --header 'Host: ftp.mozilla.org' --header 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: en,de;q=0.5' --header 'Cookie: optimizelyEndUserId=oeu1495381484085r0.16482844406273445; optimizelySegments=%7B%22245984388%22%3A%22false%22%2C%22246002457%22%3A%22search%22%2C%22246073289%22%3A%22none%22%2C%22246073290%22%3A%22ff%22%7D; optimizelyBuckets=%7B%7D' --header 'DNT: 1' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://ftp.mozilla.org/pub/firefox/releases/56.0.1/linux-x86_64/en-US/firefox-56.0.1.tar.bz2' -o 'firefox-56.0.1.tar.bz2' -L

    
por 18.10.2017 / 18:37
0

Simplesmente com a ferramenta curl :

curl -Os "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US/firefox-56.0.1.tar.bz2" 

-O, --remote-name
Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.)

    
por 18.10.2017 / 18:56

Tags