逃了!在 wget 的密码参数中

Dav*_*ave 5 bash wget

我正在尝试执行这样的操作:

wget --user=foo --password=bar! url
Run Code Online (Sandbox Code Playgroud)

这 !在密码中导致问题。我试过用 \ 转义它,如

--password=bar\!
Run Code Online (Sandbox Code Playgroud)

我试过用单引号和双引号封装。我把密码放在一个单独的文件中并尝试

--密码=cat pass.txt

每次,我都会收到 403 Forbidden。使用 -d,我看到 SSL 握手成功。在 Windows 命令行上,该命令有效。我的假设是我需要逃避 ! 不同,但我不知道还有什么。

Ste*_*ski 7

尝试使用引号:

--password="bar\!" 或者 --password='bar\!'

服务器端的错误是什么?

更新: 我在运行 Apache 2.2.14 的 Ubuntu 10.4 机器上进行了测试。wget --user=foo --password=bar! url为我工作。

如果我使用错误的密码,我会收到类似user foo: authentication failure for "/directorytest/": Password Mismatch.

再次更新:(退一步)

你说这个错误是“客户端被服务器配置拒绝”。我浏览了 Apache 源,此错误消息来自mod_authz_host。这表明您的问题不在于密码(即身份验证),而是您的客户端主机无权访问此 Apache 资源。mod_authz_host 处理主机名和 IP。

在上面,您说“在 Windows 命令行上,该命令有效。” 您的所有测试都来自同一个客户端系统吗?您是否在同一个 Windows 系统上运行“wget”?如果您尝试使用 IE 或 Firefox 访问相同的 URL,会发生什么?

更多讨论在这里这里