sudo로 실행할 때 wget에서 오류가 발생하는 이유는 무엇입니까?


21

나는 다음 명령을 시도했다 :

$ wget -q --tries=10 --timeout=20 --spider http://google.com

( 이 SO 게시물에서 . bash에서 인터넷 연결을 확인하고 싶습니다.)

다음과 같은 결과가 나옵니다.

Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50--  http://google.com/
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 302 Found
Location: http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA [following]
Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:50--  http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA
Connecting to 127.0.0.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

괜찮아 보이지만으로 cmd를 실행하면 다음과 sudo같은 메시지가 나타납니다.

Spider mode enabled. Check if remote file exists.
--2015-09-28 09:55:27--  http://google.com/
Resolving google.com (google.com)... failed: Name or service not known.
wget: unable to resolve host address google.com

스크립트 에이 줄이 필요합니다.이 스크립트는 sudo항상 호출 하므로 실패합니다.

누군가 나에게 이유를 말해 줄 수 있습니까? 그 문제를 어떻게 해결할 수 있습니까?


죄송합니다, 실제로 AskUbuntu 에서 질문을 만들고 싶었 습니다 . 여기에 주제가 있는지 잘 모르겠습니다 ...
h0ch5tr4355

11
여기에 주제가 있습니다.
Deltik

4
거기에 화제가 될 것입니다.
SnakeDoc

이것은 XY 문제 처럼 보입니다 . wgetgoogle.com에 대해 임의의 항목 을 실행하는 것이 인터넷 연결이 작동하는지 확인하는 좋은 방법이 아닌 것 같습니다. 예를 들어, Google에 HTTP 연결을 허용하지만 스크립트가 실제로 원하는 것을 금지하는 연결에있을 수 있습니다. ; 또는 Google은 자신의 사이트에 대한 wget 액세스를 금지 할 수 있습니다. sudo wget blah잠재적 인 해결책 이라고 생각하는 실제 문제는 무엇입니까 ?
David Richerby

답변:


39

환경에 프록시가 정의되어 있습니다. 귀하의 것으로 보입니다 127.0.0.1:3128.

를 실행 sudo하면 프록시 환경 변수가 전달되지 않으므로 직접 확인할 수 없습니다 google.com.

이 명령으로 환경 변수에 정의한 프록시 / 프록시를 확인할 수 있습니다.

env | grep proxy

Ask Ubuntu에 대한 추가 정보

참고 : 당신이 원하는 경우 sudoHTTP 프록시 환경 변수를 전달하는 데,이 시도 :

sudo http_proxy="$http_proxy" wget -q --tries=10 --timeout=20 --spider http://google.com

다음을 사용하여 모든 환경 변수를 전달할 수도 있습니다 sudo -E.

sudo -E wget -q --tries=10 --timeout=20 --spider http://google.com

스택 오버플로에는 sudoing 시 환경 변수를 유지하기위한 다른 옵션 이 있습니다.


5
답변을 게시 할뿐만 아니라 설명을위한 링크를 게시 해 주셔서 감사합니다. 나를 위해 완벽하게 일했습니다.
h0ch5tr4355

7
sudo -E환경 변수를 보존 하는 데 사용할 수도 있습니다
Squidly

4
http_proxy 만 전달하면 sudo http_proxy=$http_proxy wget ...더 좋지 않을까요? 스크립트에서 사용하면 프록시가 변경되는 경우 스크립트를 변경할 필요가 없습니다.
Josef

1
좋은 사람, @Josef. 귀하의 제안으로 답변을 업데이트했습니다.
Deltik

1
당신은 또한 추가 할 수 있습니다 Defaults env_keep += "http_proxy ftp_proxy"/etc/sudoers자동으로 sudo를 만들어 그 ENV 변수를 보존 할 수 있습니다.
Francois
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.