wget 不接受变量 http_proxy

wget 不接受变量 http_proxy

如果我运行:

echo $http_proxy

它输出:

http://user:pass@host:port

但是当我跑步时:

wget www.google.com

它输出:

Resolviendo www.google.com... 209.85.195.104
Caching www.google.com => 209.85.195.104
Conectando a www.google.com|209.85.195.104|:80... Closed fd 3
falló: Expiró el tiempo de conexión.
Releasing 0x088293a8 (new refcount 1).
Reintentando.

--2010-07-07 19:40:00--  (intento: 2)  http://www.google.com/
Found www.google.com in host_name_addresses_map (0x88293a8)
Conectando a www.google.com|209.85.195.104|:80...

用英语讲:

Resolving www.google.com... 209.85.195.104
Caching www.google.com => 209.85.195.104
conecting to www.google.com|209.85.195.104|:80... Closed fd 3
fail: conection time has expired.
Releasing 0x088293a8 (new refcount 1).
retrying.
...

我做错了什么?

笔记: https_proxy 和 ftp_proxy 具有相同的值。我已经尝试修改 /etc/wgetrc 并重新启动,但没有成功。

答案1

感谢调试日志。

因此,您显然没有使用根据该输出所期望的环境代理设置。

http://www.gnu.org/software/wget/manual/wget.html#Proxies了解配置代理设置的一些替代方法。

目前尚不清楚您是否处于某种受控环境中,但您调用的 wget 也有可能已被修改 - 也许有一个包装器脚本正在剥离环境或禁用代理设置(--no-proxy)。是否file $(which wget)显示它是可执行文件?

答案2

这是 Ubuntu 吗?请参阅以下解决方法https://bugs.launchpad.net/ubuntu/+source/wget/+bug/585766

此外,除了设置 http_proxy 环境变量之外,你可能还需要在 .wgetrc 中设置“proxy = on”。我认为这是在http://www.gnu.org/software/wget/manual/wget.html#Proxies

答案3

另外,尝试设置 $HTTP_PROXY。

答案4

为了将 shell 中定义的变量传递给子进程,必须导出这些变量。无法导出它们可能会导致您描述的问题。这是我自己的终端中的一个示例:

首先,我尝试下载该页面,发现它没有使用我的代理。

sh-3.2$ wget serverfault.com
--2016-11-03 18:46:15-- http://serverfault.com/
正在解析 serverfault.com...151.101.65.69, 151.101.129.69, 151.101.193.69, ...
连接到 serverfault.com|151.101.65.69|:80...^C

我发现了我的方法的错误,并定义了环境变量。

sh-3.2$ http_proxy="http://proxy.example.com:80/"
sh-3.2$ 回显 $http_proxy
http://proxy.example.com:80/
sh-3.2$ wget serverfault.com
--2016-11-03 18:46:53-- http://serverfault.com/
正在解析 serverfault.com...151.101.65.69, 151.101.129.69, 151.101.193.69, ...
连接到 serverfault.com|151.101.65.69|:80...^C

不幸的是,它仍然不起作用。问题是我定义变量后没有导出它,所以子进程看不到它。

sh-3.2$ env | grep http_proxy
sh-3.2$ 导出 http_proxy
sh-3.2$ env | grep http_proxy
http_proxy=http://proxy.example.com:80/

wget 现在应该尝试使用我的代理。

sh-3.2$ wget serverfault.com
--2016-11-03 18:48:30-- http://serverfault.com/
解析 proxy.example.com... 失败:未提供节点名或服务名,或者未知。
wget:无法解析主机地址“proxy.example.com”

相关内容