Wget: Is there a way to pass username and password from a file?
Solution 1:
I'm surprised nobody mentioned the .netrc
file. First create the file if it doesn't exists and set safe permissions:
touch ~/.netrc
chmod 600 ~/.netrc
Then you can add the hostname, username and password all on one line:
echo 'machine example.com login casper password CasperPassword' >> ~/.netrc
Then when you do wget https://example.com
and the server responds with 401 Authorization Required
, wget will retry with the username and password from the ~/.netrc
file.
When using this from cron make sure you have the right HOME
directory. Often cron sets HOME=/
(in that case you would have to create the file as /.netrc
, but it's better to set a proper HOME
at the beginning of your script, like export HOME=/root
).
You can specify multiple hosts in ~/.netrc
, one per line. More info in man netrc
.
Solution 2:
Use a .wgetrc
file (GNU manual) in which you can set username and passwords for either or both ftp and http.
To use the same credentials for both specify
user=casper
password=CasperPassword
or individually
ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Solution 3:
In many regards curl can be a better choice. Wget became a bit stale over time.
curl's -n switch can be used for this task: http://curl.haxx.se/docs/manpage.html#-n