有没有办法从文件而不是通过--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
login
和password
关键字添加主机名、用户名和密码:
echo 'machine example.com login casper password CasperPassword' >> ~/.netrc
如果您随后运行wget https://example.com
并且服务器响应401 Authorization Required
,wget
则将使用文件中的用户名和密码重试~/.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