Если я бегу:
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 и повторно запустить.
Чтобы переменные, определенные в вашей оболочке, передавались в подпроцессы, их необходимо экспортировать. Отсутствие их экспорта может вызвать описанную вами проблему. Вот пример из моего собственного терминала:
Сначала я пытаюсь загрузить страницу и обнаруживаю, что она не использует мой прокси.
sh-3.2$ wget serverfault.com --2016-11-03 18:46:15-- http://serverfault.com/ Resolving serverfault.com... 151.101.65.69, 151.101.129.69, 151.101.193.69, ... Connecting to serverfault.com|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 serverfault.com --2016-11-03 18:46:53-- http://serverfault.com/ Resolving serverfault.com... 151.101.65.69, 151.101.129.69, 151.101.193.69, ... Connecting to serverfault.com|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 serverfault.com --2016-11-03 18:48:30-- http://serverfault.com/ Resolving proxy.example.com... failed: nodename nor servname provided, or not known. wget: unable to resolve host address 'proxy.example.com'
Спасибо за журналы отладки.
Таким образом, вы явно не используете настройки прокси-сервера env, которые вы ожидаете на основе этого вывода.
Видеть http://www.gnu.org/software/wget/manual/wget.html#Proxies для некоторых альтернативных методов настройки параметров прокси.
Неясно, находитесь ли вы в какой-то контролируемой среде, но также возможно, что вызываемый вами wget был каким-то образом изменен - возможно, есть сценарий оболочки, который удаляет среду или отключает настройки прокси-сервера. используемый (--no-proxy
). Делает file $(which wget)
показать это исполняемый файл?
Это Ubuntu? См. Обходной путь на https://bugs.launchpad.net/ubuntu/+source/wget/+bug/585766 .
Кроме того, вам может потребоваться установить proxy = on в вашем .wgetrc в дополнение к настройке переменной среды http_proxy. Я думаю, что это смутно предлагается в http://www.gnu.org/software/wget/manual/wget.html#Proxies .
Также попробуйте вместо этого установить $ HTTP_PROXY.
Вы определили http_proxy в / etc / wgetrc или ~ / .wgetrc? Wget, похоже, не читает переменную среды, но у меня это сработало, когда я определил ее в одном из этих файлов.
РЕДАКТИРОВАТЬ: мне не нужно изменять wgetrc, если я устанавливаю http_proxy в ~ / .bashrc и удаляю no_proxy из / etc / environment.