Wget:是否可以通过文件传递用户名和密码?


22

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

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

Answers:


13

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

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

user=casper
password=CasperPassword

或单独

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

2
GNU wget手册还建议使用该-i选项,并从标准输入中输入用户名和密码。
理查德

是否.wgetrc提供了与多台服务器一起使用的灵活性?如果不是这样,.netrc则是更好的解决方案,请参见tobias.pal 的其他答案
ryenus 17-02-26

我显然错过了使用.netrc文件的wget ,但已记录在案
Mike Renfro

19

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

touch ~/.netrc
chmod 600 ~/.netrc

然后,您可以在一行上添加主机名,用户名和密码:

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

然后,当您这样做wget https://example.com并且服务器使用响应时401 Authorization Required,wget将使用~/.netrc文件中的用户名和密码重试。

从cron使用此文件时,请确保您具有正确的HOME目录。通常是cron集HOME=/(在这种情况下,您必须将文件创建为/.netrc,但是最好HOME在脚本的开头设置一个适当的名称,例如export HOME=/root)。

您可以在中指定多台主机~/.netrc,每行一台。中的更多信息man netrc


2
有关的语法.netrc,请参见其手册或相关的curl文档
ryenus

起初我太粗心了,无法man netrc在OP中看到它,不知道为什么行得通,然后@ryenus您的评论为我省了,谢谢〜始终欢迎使用手册:P然后我知道它是rc使用的rc文件ftp,也就是说,它可能不适用于http。我稍后会在http上尝试。
周末

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.