ネットワークシステムを管理する立場になると、なんだか不安定...ということがたまによくあります。
そうなると、どういうタイミングで落ちているのか、調子が悪いといわれた時間帯にパケットが落ちるようなことが起きていないか、などを監視する必要が出てきます。
そう言う場合、zabbixのicmpping[]なんかを使って監視するのが一番確実なのですが、すぐにそういった環境が用意できない場合もあるでしょうし、フリーソフト絶対禁止というポリシーをお持ちの企業さんなども多いと思います。
そんな時に、使える小ネタです
(1) コマンドプロンプトを起動し、downloadsなどの適当なワークフォルダをカレントディレクトリにします
(2) ping x.x.x.x -t >pingwatch.txt として実行します(リダイレクトしているpingwatch.txtは適宜変更してもOKです)
(3) Powershellを起動し、以下のコマンドを入力します。
Get-Content -path .\pingwatch.txt -Wait -Tail 100|Select-String -Pattern ".*タイムアウト.*"|%{(Get-Date).ToString() + " $_"}
こうすると、powershellがpingwatch.txtを監視して、pingがタイムアウトしたときに、powershellの標準出力に「日付 ~タイムアウトしました。」みたいな感じで表示されます。
上のスクリプトをリダイレクトすれば、きちんと残しておくこともできるでしょう。
こういったシチュエーションはあまりないかもですが、もしお役に立てたら幸いです。
GRN
余談ですが、%(ForEach-Objectのalias)のところで、write-host を使って、ForegroundColor/BackgroundColorを指定すれば、強調表示することもできます。
例えば、
Get-Content -Path .\ping.txt -Wait -Tail 100|Select-String -Pattern ".*タイムアウト.*"|%{Write-Host (Get-Date).ToString() " $_" -ForegroundColor Red -BackgroundColor Yellow}
とすると、赤文字、背景黄色の強調表示になります。