Wget: Existe uma maneira de passar nome de usuário e senha de um arquivo?

21

Existe uma maneira de passar o nome de usuário e senha de um arquivo em vez da linha de comando via --user e --password?

Antecedentes: Eu quero rodar o wget via cron e não quero que o nome de usuário / senha apareçam na visualização de processo

    
por casper 08.05.2011 / 14:58

3 respostas

13

Use um arquivo .wgetrc ( manual do GNU ) no qual você pode definir nome de usuário e senhas para um ou ambos ftp e http.

Para usar as mesmas credenciais para ambos, especifique

user=casper
password=CasperPassword

ou individualmente

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
    
por 08.05.2011 / 15:08
16

Estou surpreso que ninguém tenha mencionado o arquivo .netrc . Primeiro, crie o arquivo se ele não existir e defina permissões seguras:

touch ~/.netrc
chmod 600 ~/.netrc

Você pode adicionar o nome do host, nome de usuário e senha em uma única linha:

echo 'machine example.com login casper password CasperPassword' >> ~/.netrc

Então, quando você executar wget https://example.com e o servidor responder com 401 Authorization Required , o wget tentará novamente com o nome de usuário e senha do arquivo ~/.netrc .

Ao usar isso do cron, certifique-se de ter o diretório HOME correto. Muitas vezes, o cron define HOME=/ (nesse caso, você teria que criar o arquivo como /.netrc , mas é melhor definir um HOME adequado no início do seu script, como export HOME=/root ).

Você pode especificar vários hosts em ~/.netrc , um por linha. Mais informações em man netrc .

    
por 26.02.2015 / 11:34
0

Em muitos aspectos, o curl pode ser uma escolha melhor. Wget ficou um pouco obsoleto com o tempo.

O switch -n do curl pode ser usado para esta tarefa:   link

    
por 08.05.2011 / 17:40