我试图从命令行从我的 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)
您还可以对用户名和/或密码进行 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 或网络浏览器。)