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

cas*_*per 22 password wget credentials user-accounts

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

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

Pau*_*ias 22

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

touch ~/.netrc
chmod 600 ~/.netrc
Run Code Online (Sandbox Code Playgroud)

然后你可以在一行中添加主机名、用户名和密码:

echo 'machine example.com login casper password CasperPassword' >> ~/.netrc
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • `.netrc` 的语法参见其[手册](https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-file.html),或相关的[curl doc]( https://ec.haxx.se/usingcurl-netrc.html)。 (2认同)

Mik*_*fro 13

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

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

user=casper
password=CasperPassword
Run Code Online (Sandbox Code Playgroud)

或单独

ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
Run Code Online (Sandbox Code Playgroud)

  • GNU [wget 手册](http://www.gnu.org/software/wget/manual/wget.html#Security-Considerations) 还建议使用 `-i` 选项并从标准输入中输入用户名和密码. (2认同)