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 и переустановить безуспешно.

5 ответов

Решение

Спасибо за журналы отладки.

Таким образом, вы явно не используете настройки прокси env, которые вы ожидаете, основываясь на этом выводе.

См. http://www.gnu.org/software/wget/manual/wget.html для некоторых альтернативных способов настройки параметров прокси.

Непонятно, находитесь ли вы в какой-то контролируемой среде, но также возможно, что вызываемый вами wget был каким-то образом изменен - ​​возможно, есть скрипт-обертка, который удаляет среду или отключает настройки прокси-сервера. используемый (--no-proxy). Есть ли file $(which wget) показать, что это исполняемый файл?

Чтобы переменные, определенные в вашей оболочке, передавались подпроцессам, их необходимо экспортировать. Невозможность их экспорта может привести к описанной вами проблеме. Вот пример из моего собственного терминала:

Сначала я пытаюсь загрузить страницу и обнаруживаю, что она не использует мой прокси.

sh-3.2 $ wget faultserver.ru
--2016-11-03 18: 46: 15-- http://faultserver.ru/
Разрешение faultserver.ru... 151.101.65.69, 151.101.129.69, 151.101.193.69, ...
Подключение к faultserver.ru|151.101.65.69|:80... ^C

Я обнаруживаю ошибку моих путей и определяю переменную среды.

sh-3.2 $ http_proxy = "http://proxy.example.com:80/"
sh-3.2 $ echo $ http_proxy
http://proxy.example.com:80/
sh-3.2 $ wget faultserver.ru
--2016-11-03 18: 46: 53-- http://faultserver.ru/
Разрешение faultserver.ru... 151.101.65.69, 151.101.129.69, 151.101.193.69, ...
Подключение к faultserver.ru|151.101.65.69|:80... ^C

К сожалению, это все еще не работает. Проблема в том, что я не экспортировал переменную после того, как определил ее, поэтому подпроцессы не могут ее увидеть.

sh-3.2 $ env | grep http_proxy
sh-3.2 $ export http_proxy
sh-3.2 $ env | grep http_proxy
http_proxy = HTTP: //proxy.example.com: 80 /

Теперь wget должен попытаться использовать мой прокси.

sh-3.2 $ wget faultserver.ru
--2016-11-03 18: 48: 30-- http://faultserver.ru/
Разрешение proxy.example.com... не выполнено: имя узла или имя сервера указаны или неизвестны.
wget: невозможно определить адрес хоста proxy.example.com

Кроме того, попробуйте вместо этого установить $HTTP_PROXY.

Вы определили http_proxy в / etc / wgetrc или ~/.wgetrc? Wget, похоже, не читает переменную окружения, но она сработала для меня, когда я определил ее в одном из этих файлов.

РЕДАКТИРОВАТЬ: мне не нужно изменять wgetrc, если я установил http_proxy в ~/.bashrc и удалил no_proxy из / etc / environment.

Это Ubuntu? См. Обходной путь в https://bugs.launchpad.net/ubuntu/+source/wget/+bug/585766.

Кроме того, вам может потребоваться установить proxy = on в вашем.wgetrc, в дополнение к установке переменной окружения http_proxy. Я думаю, что это смутно предложено на http://www.gnu.org/software/wget/manual/wget.html.

Другие вопросы по тегам