Wget: Is there a way to pass username and password from a file?
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
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
You can specify multiple hosts in
~/.netrc, one per line. More info in
.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
ftp_user=casperftp ftp_password=casperftppass http_user=casperhttp http_password=casperhttppass
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