Faça o download do arquivo no Linux quando a localização do arquivo for desconhecida

1

Desculpe se isso não está claro, mas estou tentando configurar um script que baixa um arquivo. Atualmente, meu método de baixar o arquivo é clicando em um link assim:

https://www.URL.com/view?downloadFile=AcctItemFiles34567890.txt

Eu tentei usar um comando wget , mas isso obviamente não funcionou porque esse link não é um local de arquivo real. Qualquer ideia sobre como descobrir a localização real do arquivo ou como baixar o arquivo com esse link seria útil.

    
por Nick 03.06.2011 / 20:09

2 respostas

2

wget não deve ter problema em buscá-lo, pois ele executa o comando GET bem em um URL como esse. Os únicos problemas que posso imaginar que você esteja tendo são:

  • que \ é um caractere de shell especial e você precisará colocar a URL entre aspas para evitar que o shell converta para 1 . Melhor ainda, escape de \ caracteres como %5C
  • O wget está nomeando o arquivo view?downloadFile=AcctItemFiles34567890.txt em vez de algo sensato como seu navegador da Web faz. Use a opção -O filename para forçá-lo a gravar todos os dados baixados em um nome de arquivo especificado, por exemplo,

(interessante ... um bloco de código não pode seguir um ponto)

wget -O 1234567890.txt "http://www.whatever.com/view?downloadFile=AcctItemFiles34567890.txt" 

Ou use a opção --content-disposition para dizer para salvar usando o nome do arquivo fornecido pelo servidor no cabeçalho (leia e compreenda o aviso sobre ele estar com bugs e sobre ele exigindo duas solicitações. Não use isso se o script de destino não suportar o comando HEAD) Como alternativa, use curl -O -J ... em vez de wget, em que -O -J juntos instruir para ler o nome do arquivo de saída do cabeçalho. A documentação não diz que o curl exige dois pedidos, mas o curl recentemente teve uma vulnerabilidade devido à confiança em nomes de arquivos inválidos, portanto, "bugs" pode ainda se aplicam.

    
por 03.06.2011 / 22:17
0

Tente usar curl com o sinalizador '-L' em vez de wget.

   -L/--location
          (HTTP/HTTPS) If the server reports that the requested page has moved to a   different location (indicated with a Location: header and a 3XX response code), this  option  will
          make  curl  redo the request on the new place.

Curl e wget se complementam.

    
por 03.06.2011 / 20:17

Tags