
私は研究室のコンピュータセットのためのWake on LANスクリプトを書いています。我々は、コンピュータのホスト名、IP、およびMACのリストを含むsqliteデータベースを持っています。現在、「-c1」を使用して各データベースをpingして、無限に実行されないようにします。しかし、少し待ち時間が必要な場合でも、より速い方法はありますか? pingの代わりに答え? pingを使用すると、続行するにはping応答が必要なため、スクリプトの速度が大幅に遅くなるようです。
どんなアドバイスでも心から感謝します!
答え1
単一のパケットを送信して応答を待つのが最速の方法の1つであり、pingが良い方法です。実際、あなたのユースケースによると、次のようになります。早すぎるこれは、システムが実際に有用なタスクを実行しているかどうかを知らせるのではなく、カーネルのネットワーキングサブシステムがアクティブで構成されているという事実だけを知らせるからです。
しかし、これが十分であると仮定すると、いくつかの改善を行うことができます。まず、-W1
pingタイムアウトを1秒に短縮できます。次に、スクリプトが他のホストを非同期に(バックグラウンドスレッドで)pingして待つことなく、必要に応じて結果を確認できます。
あるいは、アプローチを考え直し、起動時にリモートシステムをチェックインすることもできます。システムがまだチェックインしていない場合は、システムがダウンしていると想定できます。
答え2
これがfpingが設計された理由です。http://fping.sourceforge.net/
戻りコードに頼るのではなく、後で出力を解析する必要がありますが、通常のpingよりはるかに高速です。
答え3
ethtool
これは1台または2台のコンピュータでのみ機能しますが、ヘルスチェックを担当するコンピュータに直接接続すると、リンクが有効になっていることを確認できます。
答え4
神経節クラスタ内の多くのホストを監視するには、マルチキャストトラフィックを使用してください。似たようなものを使えますか?これは、ネットワークハードウェアがすべてのホストと監視システム間のマルチキャストトラフィックを許可すると仮定します。