逃脱! 在wget的密码参数中

我试图执行这样的事情:

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 +HclosuresBash的历史扩张。

编辑:

尝试在~/.wgetrc文件或WGETRC环境variables指向的文件中设置password = STRINGhttp_password = STRINGftp_password = STRING ,并WGETRC省略--password选项。

不要工作:

wget ftp://user:[email protected]/file

您可以使用:

wget ftp://user:p\[email protected]/file

请在'!'之前注意'\'