Por que o sudo curl ignora as configurações de proxy?

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.

O último comando não usa proxy. Por quê?

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

Também está funcionando corretamente.

    
por Jofsey 27.10.2012 / 12:17

2 respostas

6

Isso não faz o que você pensa:

sudo echo $http_proxy

Com isso, $http_proxy é expandido pelo shell antes sudo ser chamado, então ele pega seu próprio ambiente.

Um su simples (sem - , -l ou --login ) também mantém (a maioria) o ambiente intacto, portanto, as configurações de proxy são herdadas.

sudo não preserva o ambiente por padrão. Você poderia tentar:

sudo -E curl ...

(para preservar todo o ambiente, se você puder fazer isso), ou

sudo http_proxy=$http_proxy curl ...

para passar apenas http_proxy (mais seguro).

    
por 27.10.2012 / 12:40
1

Especifique o host como:

  • um argumento de linha de comando (-x)
  • na linha de comando (comando var = moo)
  • ou exportá-lo para o seu ambiente

    $ 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/ 

    
por 27.10.2012 / 14:46