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

22

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

Segundo plano: desejo executar o wget via cron e não quero que o nome de usuário / senha apareça na visualização do processo

Casper
fonte

Respostas:

13

Use um .wgetrcarquivo ( manual GNU ) no qual você pode definir o nome de usuário e as senhas para 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
Mike Renfro
fonte
2
O manual do GNU wget também sugere usar a -iopção e inserir o nome de usuário e a senha a partir da entrada padrão.
Richard
Oferece .wgetrcflexibilidade para trabalhar com mais de um servidor? Se não, .netrcé uma solução melhor, veja a outra resposta de tobias.pal
ryenus
Obviamente, senti falta do wget usando um .netrcarquivo, mas está documentado .
Mike Renfro
19

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

touch ~/.netrc
chmod 600 ~/.netrc

Em seguida, você pode adicionar o nome do host, o nome de usuário e a senha, todos em uma linha:

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

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

Ao usar isso no cron, verifique se você possui o HOMEdiretório certo . Geralmente, o cron define HOME=/(nesse caso, você teria que criar o arquivo como /.netrc, mas é melhor definir um apropriado HOMEno início do script, como export HOME=/root).

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

Paul Tobias
fonte
2
Para a sintaxe de .netrc, consulte o manual ou o documento de ondulação relacionado .
Ryenus
No começo eu sou muito descuidado para ver o man netrcOP, me perguntando por que isso funciona, então @ryenus seu comentário me salva, obrigado ~ O manual é sempre bem-vindo: P Então eu sei que é um arquivo rc usado por ftp, ou seja, pode não funciona para http. Vou tentar no http mais tarde.
Fim de semana