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
ここで話題になっています。
デルティック

4
それはそこにオフトピックになります。
SnakeDoc

これはXY問題のように見えますwgetgoogle.comに対してランダムに実行することは、インターネット接続が機能していることを確認する良い方法ではないようです。たとえば、GoogleへのHTTP接続は許可するが、スクリプトが本当にしたいことを禁止する接続にいる場合があります; または、Googleがサイトへのwgetアクセスを禁止する場合があります。あなたが実際に抱えている問題は何ですか、それに対してsudo wget blah潜在的な解決策だと思いますか?
デビッドリチャービー

回答:


39

環境にプロキシが定義されています。のように見えます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

スタックオーバーフローには、実行時に環境変数を保持するためのその他のオプションがありますsudo


5
OK、答えを投稿するだけでなく、説明のためにリンクを投稿してくれてありがとう。私のために完璧に働いた。
h0ch5tr4355

7
また、sudo -E環境変数を保持するために使用することができます
イカリー

4
http_proxyを渡すだけのsudo http_proxy=$http_proxy wget ...方が良いでしょうか?スクリプトでそれを使用する場合、プロキシが変更されても変更する必要はありません。
ジョセフ

1
いいね、@ Josef。あなたの提案で答えを更新しました。
デルティック

1
を追加Defaults env_keep += "http_proxy ftp_proxy"/etc/sudoersて、sudoにこれらのenv変数を自動的に保存させることもできます。
フランソワ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.