5
$ echo $http_proxy
http://my.proxy.com

$ curl -v http://files.com/a.txt
* About to connect() to proxy my.proxy.com
# Correct downloading

$ sudo echo $http_proxy
http://my.proxy.com

$sudo curl -v http://files.com/a.txt
# Hanging.

Последняя команда не использует прокси. Зачем?

$su
$curl -v http://files.com/a.txt

Также работает правильно.

2 ответа2

6

Это не делает то, что вы думаете, что делает:

sudo echo $http_proxy

При этом оболочка $http_proxy расширяется до sudo , поэтому она выбирает вашу собственную среду.

Обычное su (без - , -l или --login) также сохраняет (большую часть) среду без изменений, поэтому настройки прокси наследуются.

sudo не сохраняет среду по умолчанию. Вы можете попробовать либо:

sudo -E curl ...

(чтобы сохранить всю окружающую среду, если вам разрешено это делать), или

sudo http_proxy=$http_proxy curl ...

только передавать http_proxy (безопаснее).

1

Укажите хост как:

  • аргумент командной строки (-x)
  • в командной строке (команда var = moo)
  • или экспортируйте его в свою среду

    $ curl http://icanhazip.com/ -x http://87-98-136-60.ovh.net:80  
    87.98.136.60

    $ curl http://icanhazip.com/ 
    84.202.82.63

    $ http_proxy=http://87-98-136-60.ovh.net:80 curl  http://icanhazip.com/ 
    87.98.136.60

    $ http_proxy=http://87-98-136-60.ovh.net:80;  curl  http://icanhazip.com/ 
    84.202.82.63

    $ export http_proxy=http://87-98-136-60.ovh.net:80;  curl  http://icanhazip.com/ 
    87.98.136.60

    $ http_proxy=http://87-98-136-60.ovh.net:80;  sudo curl  http://icanhazip.com/ 
    84.202.82.63

    $ export http_proxy=http://87-98-136-60.ovh.net:80;  sudo -E curl  http://icanhazip.com/ 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .