次のコマンドを試しました:
$ 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
と常に失敗します。
誰かこの理由を教えてくれませんか? どうすればこれを回避できますか?
答え1
ご使用の環境ではプロキシが定義されています。 のようです127.0.0.1:3128
。
を実行するとsudo
、プロキシ環境変数が渡されないため、 を直接解決することはできませんgoogle.com
。
次のコマンドを使用すると、環境変数で定義されているプロキシを確認できます。
env | grep proxy
注記: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