wget for ftp 使用包含@的密码

roo*_*unk 16 ftp wget

我试图从命令行从我的 ftp 服务器获取一些文件。我正在使用 wget 一次下载整个文件夹。命令是:

wget -m ftp://username:password@ftp.hostname.com:/path/to/folder
Run Code Online (Sandbox Code Playgroud)

但问题是,我的密码包含“@”符号。因此命令变为

wget -m ftp://username:foo@bar@ftp.hostname.com:/.. 
Run Code Online (Sandbox Code Playgroud)

因此,wget 尝试将 bar@ftp.hostname.com 解析为主机,但它无法做到。请帮忙!

Den*_*nis 33

而不是user:pass@hostname语法,使用开关。来自wget --help

--ftp-user=USER         set ftp user to USER.
--ftp-password=PASS     set ftp password to PASS.
Run Code Online (Sandbox Code Playgroud)

例子:

wget -m --ftp-user=username --ftp-password=foo@bar ftp://ftp.hostname.com/file
Run Code Online (Sandbox Code Playgroud)


Joh*_*ick 8

您还可以对用户名和/或密码进行 URL 编码。该@符号变成%40

例如:

wget -m ftp://username:foo@bar@ftp.hostname.com:/.. 
Run Code Online (Sandbox Code Playgroud)

可以写成

wget -m ftp://username:foo%40bar@ftp.hostname.com:/.. 
Run Code Online (Sandbox Code Playgroud)

我意识到这个问题很久以前就已经解决了,但是我在眼角看到了这个,并认为我会提出一个解决方案(这实际上很有用,因为它应该适用于任何使用或支持使用 URI 的东西,例如FileZilla 或网络浏览器。)