Wget:有没有办法从文件传递用户名和密码?

Wget:有没有办法从文件传递用户名和密码?

有没有办法从文件而不是通过--user 和--password 传递用户名和密码?

背景:我想通过 cron 运行 wget,并且不希望用户名/密码显示在进程视图中

答案1

使用.wgetrc文件 (GNU 手册),您可以在其中为 ftp 或 http 之一或两者设置用户名和密码。

要对两者使用相同的凭据,请指定

user=casper
password=CasperPassword

或单独

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass

答案2

我很惊讶没有人提到这个.netrc文件。如果文件不存在,请创建它并设置安全权限:

touch ~/.netrc
chmod 600 ~/.netrc

随后使用machine loginpassword关键字添加主机名、用户名和密码:

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

如果您随后运行wget https://example.com并且服务器响应401 Authorization Requiredwget则将使用文件中的用户名和密码重试~/.netrc

需要curl添加--netrc(或--netrc-optional--netrc-file)参数,因为如果没有该参数curl就无法读取.netrc文件。

从 cron 使用时,请确保HOME设置了正确的环境变量。Cron 通常默认为HOME=/(在这种情况下,您必须将文件创建为/.netrc,但更好的解决方案是HOME在脚本开始时设置适当的,如export HOME=/root)。

~/.netrc文件可用于多个主机。有关更多信息,请.netrc访问inetutils 手册curl 手册

答案3

从很多方面来看,curl 可能是更好的选择。随着时间的推移,wget 变得有点过时了。

curl 的 -n 开关可用于此任务: http://curl.haxx.se/docs/manpage.html#-n

相关内容