シェルスクリプトを使用してインターネットに接続されていることを確認しようとしています。私はこれを使ってこれを行うことができると思います。平らなこれは、pingが成功すると括弧内にIP情報が表示されるためです。角かっこがない場合は、次を使用します。切るこのコマンドは特定の変数を割り当てます。この場合、変数は空になります。
だから、私は次のコードを書いた。
echo " First check whether internet is working or not : "
internetCheck=$(ping -c 1 google.com | cut -s -d "(" -f1)
if [ -z "$internetCheck" ]; then
echo "NO INTERNET CONNECTION FOUND !"
else
echo "[ OK ] Internet is connected.\n"
fi
効果がありました。しかし、接続を切断して同じウェブサイト(google.com)に対してスクリプトを繰り返すと、システム(?)が最後のpingコマンドの結果を思い出して失敗します。以前のping結果を整理/更新する方法は?
答え1
より良いテスト、grepは必要ありません...
echo " First check whether internet is working or not : "
if ping -q -c 1 <host> > /dev/null 2>&1 ; then
echo "[ OK ] Internet is connected.\n"
else
echo "NO INTERNET CONNECTION FOUND !"
fi
答え2
名前をIPアドレスに変換する操作は通常、ローカルDNSリゾルバによって実行され、キャッシュされます。そのため、接続していなくても住所がわかります。
より良いオプションは100% packet loss
修正されたスクリプトバージョンです。
echo " First check whether internet is working or not : "
if ping -c 1 google.com | grep -qE '100% packet loss|Temporary failure in name resolution' ; then
echo "NO INTERNET CONNECTION FOUND !"
else
echo "[ OK ] Internet is connected.\n"
fi