11

インターネットが稼働しているかどうかを毎分チェックする cron ジョブを入れるには、Bash (またはプレーン シェル) スクリプトが必要です。

これが私がやった方法です:

#! /bin/sh

host1=google.com
host2=wikipedia.org
curr_date=`date +"%Y%m%d%H%M"`

echo -n "${curr_date};"
((ping -w5 -c3 $host1 || ping -w5 -c3 $host2) > /dev/null 2>&1) && 
echo "up" || (echo "down" && exit 1)

どのようにしますか?どのホストに ping を送信しますか?

説明:

  • インターネットが稼働中」とはインターネット接続 を意味します。

  • アップ」とは、接続が使用可能であることを意味します (DNS がダウンしていることについて話しているのか、接続が本当に遅いのか [-wタイムアウトに注意してください])。これが、IP を含めずにホストのみを含めた理由でもあります。

Stack Overflow にも ping を実行する必要がありますか? つまり、Google、Wikipedia、または Stack Overflow にアクセスできない場合、インターネットは必要ありません :p

4

3 に答える 3

6

それは良い解決策のようです。DNS の機能に依存しないように、さらにいくつかのホストと、場合によってはいくつかの純粋な IP ホストを追加するだけです (それ自体は、「アップ」の定義に依存します)。

于 2010-05-27T15:07:03.060 に答える
4

あなたのコードをありがとう、それはうまくいきます、私は実際に1行しか残していません:

((ping -w5 -c3 8.8.8.8 || ping -w5 -c3 4.2.2.1) > /dev/null 2>&1) && echo "up" || (echo "down" && exit 1)
于 2013-05-03T10:48:03.907 に答える
1

インターネット接続のどの部分をチェックしますか? DHCP? DNS? 物理的にジャックに差し込まれていますか? カーネルは NIC の存在を認識していますか?

コマンドを使用して、ISP の DNS サーバーに手動でクエリを実行できますhost(1)。これは通常、ルーターが ISP への接続を失ったかどうかを示す良い指標です。

netstat(8)またはを使用して、カーネルが持つインターフェイスを照会できますifconfig(8)

を使用して、インターフェイスに関する詳細な統計を取得できますifstat

于 2010-05-27T15:14:36.147 に答える