web-dev-qa-db-ja.com

Sudoでwgetを実行するとエラーが発生するのに、それがなくても正常に機能するのはなぜですか?

私は次のコマンドを試しました:

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

(- this SO post から。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.

OKのようですが、Sudoでcmdを実行すると、これを受け取ります:

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で呼び出すスクリプトにこの行が必要なので、常に失敗します。

この理由を誰かに教えてもらえますか?どうすれば回避できますか?

21
h0ch5tr4355

環境にプロキシが定義されています。あなたのものは127.0.0.1:3128のようです。

Sudoを実行すると、プロキシ環境変数が渡されないため、google.comを直接解決できません。

次のコマンドを使用して、環境変数で定義したプロキシを確認できます。

env | grep proxy

Ask Ubuntuに関する追加情報

注:SudoにHTTPプロキシ環境変数を渡したい場合は、次を試してください:

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

Stack Overflowには、Sudoing時に環境変数を維持するためのその他のオプションがあります。

39
Deltik