我试图执行这样的事情:
wget --user=foo --password=bar! url
那! 在密码是造成问题。 我已经尝试用\来转义它,如
--password=bar\!
我试过封装在单引号和双引号中。 我把密码放在一个单独的文件中,然后尝试
–password = cat pass.txt
每一次,我得到一个403禁止。 使用-d,我看到SSL握手成功。 在Windows命令行上,该命令起作用。 我的假设是我需要逃避! 不同,但我不知道怎么回事。
尝试使用引号:
--password="bar\!"
或--password='bar\!'
服务器端的错误是什么?
更新:我在运行Apache 2.2.14的Ubuntu 10.4机器上运行testing。 wget --user=foo --password=bar! url
wget --user=foo --password=bar! url
为我工作。
如果我使用了错误的密码,我得到一个像user foo: authentication failure for "/directorytest/": Password Mismatch
的错误user foo: authentication failure for "/directorytest/": Password Mismatch
。
再次更新:(退一步)
你说这个错误是“客户端被服务器configuration拒绝”。 我浏览了Apache的源代码,这个错误信息来自mod_authz_host 。 这表示您的问题不是密码(即身份validation),但您的客户端主机无权访问此Apache资源。 mod_authz_host处理主机名和IP。
上面,你说“在Windows命令行上,命令起作用”。 所有的testing都来自同一个客户端系统吗? 你在同一个Windows系统上运行“wget”吗? 如果您尝试使用IE或Firefox访问相同的URL,会发生什么情况?
更多的讨论在这里和这里 。
尝试%21
,这是URL的编码值!
。
尝试set +H
closuresBash的历史扩张。
编辑:
尝试在~/.wgetrc
文件或WGETRC
环境variables指向的文件中设置password = STRING
, http_password = STRING
或ftp_password = STRING
,并WGETRC
省略--password
选项。
不要工作:
wget ftp://user:[email protected]/file
您可以使用:
wget ftp://user:p\[email protected]/file
请在'!'之前注意'\'