LAN上のすべてのホスト(約20個)をリストし、各ホストの横にpingステータスを書き込むスクリプトを作成しようとしています。DHCPリースファイルがあるため、すべてのIP(10.0.0.1、10.0.0.2など)があります。必要なのは、各ホストのpingステータスだけです。
したがって、私のスクリプトは各ホストに対して1つのpingを起動します。
ping -c 1 10.0.0.1
残念ながら、ホストがオフラインの場合、pingのタイムアウトには長い時間がかかります。確認man ping
しましたが、タイムアウト遅延を設定する2つのオプションがあるようです:-w deadline
と-W timeout
。私は後者に興味があると思います。
だから私はこれを試しました:
ping -c 1 -W 1 10.0.0.1
ただし、オフラインホストごとに1秒待機するのはまだ長すぎます。私はそれを1秒未満に設定しようとしましたが、パラメータをまったく考慮していないようです:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
タイムアウトをより低い値に設定する方法はありますか?そうでない場合、代替手段はありますか?
編集
- OSはDebian Lennyです。
- 私がpingしようとしているホストは、実際にはアクセスポイントです。これらは、ユーザーと同じVLANおよびサブネット上にあります(展開と置換を簡単にするため)。これが、すべてのサブネットを(
ping -b
たとえば、)スキャンしたくない理由です。
編集#2
私はfping
解決策を受け入れました(他のすべての回答に感謝します)。このコマンドは、私が探していたものを正確に実行します。
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
このコマンドの完了には最大500msかかり、すべてのホストのpingステータスを一度に表示します。
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
Debian Lennyでは、インストールは簡単です。
aptitude update
aptitude install fping