PowerShellでping監視ツールを作成してみた

スクリプト

対象機器に対してping監視して疎通不可を検知した場合、

次回復旧時(疎通可能時)に自動的にマクロを起動して異常状態を内容確認する

パワーシェルスクリプト(.ps1)を作成してみました!

なぜこのようなスクリプトを作成しようと思ったか

過去(新入社員時代)、私がネットワークエンジニアとして炎上案件のお手伝いに行ったとき、

24時間監視(2交代)で機器が再起動しないか確認する仕事をしたことがありました。

再起動した場合アラームがなり手動でterateamマクロを回して異常がないか確認することをしていましたが

その時は新卒で経験が浅かったのでわからなかったのですが確認だけなら

スクリプトぶん回せばよかったと今の技術量とアイディア力を使って振り返った時に気づきました。

今回、同じ境遇の方もいらっしゃると思いますので今ある技術を伝授できればと思います。

使うスクリプト構文

主に使うのが下記実行文となります。

ping実行

 Test-Connection -ComputerName 8.8.8.8 -Count 1 -Quiet

Test-Connection:PowerShellにてpingを打つときに必要なコマンドです

-ComputerName:IPやホストネームを指定して宛先を決定します

-Count:Pingの送信回数です

-Quiet:結果をBool(true,false)型で返します

詳細は公式サイトを確認してみてください。

Test-Connection (Microsoft.PowerShell.Management) - PowerShell
このコマンドレットは Test-Connection 、インターネット制御メッセージ プロトコル (ICMP) エコー要求パケット (ping) を 1 つ以上のリモート コンピューターに送信し、エコー応答を返します。 このコマンドレットを...

マクロ呼び出し

Start-Process -FilePath "[何かしらのマクロ実行するときのコマンド]" -Wait

Start-Process:プロセスを起動するコマンドです

-FilePath:起動したいファイルを指定します

-Wait:指定したプロセスが終了するまで待ちます

Start-Process (Microsoft.PowerShell.Management) - PowerShell
このコマンドレットは Start-Process 、ローカル コンピューターで 1 つ以上のプロセスを開始します。 既定では、 Start-Process 現在のプロセスで定義されているすべての環境変数を継承する新しいプロセスを作成します。...

実際に記載してみよう

今回は

Pingを繰り返し実行

ping疎通不可(再起動中)

ping疎通復旧(再起動完了)

確認マクロ実行

初めに戻る

を実装していきたいと思います!

完成サンプル

早速作成してみました!

#変数宣言
$PingResult = $true
$DisConnectFlag = $false

#pingを繰り返し実行
for(1){
    #Ping実施
    $PingResult = Test-Connection -ComputerName 8.8.8.8 -Count 1 -Quiet
    #ちゃんと判断できているかわからないのでデバッグ用に表示
    write-host "Ping疎通状況:"+ $PingResult + " 切断フラグ:" + $DisConnectFlag

    #ping疎通不可($PingResult=false)で初めて切断が確認された時($DisConnectFlag=false)
    if( -not $PingResult -and -not $DisConnectFlag){
        #$DisConnectFlagをtrueにして復旧まで待つ
        $DisConnectFlag = $true
    }

    #ping疎通可能($PingResult=true)で前回の結果までに切断が見られていた場合($DisConnectFlag=true)。※復旧と判断
    if($PingResult -and $DisConnectFlag){
        #マクロを実行する。$DisConnectFlagはもとに戻す
        $DisConnectFlag = $false
        Start-Process -FilePath "notepad"
    }
    #そのままだと早すぎるので2秒待ちます
    Start-Sleep -s 2
}

最後に

完成したサンプルでIPは確認したい対象に変更

マクロを実行する部分に関しては諸事情でTeraTeamマクロが用意できなかったのでメモ帳を開いています。

もし運用したい場合はマクロを指定してください!

一番上でも触れましたが、過去の話をすると当時の自分は深夜2時ごろに眠い目をこすりながら

監視画面を見続けていました。今回はなるべくシンプルに記載しましたが

このツールをもう少しカスタマイズして実行したログが出てくるようになれば

目視確認より誤操作もなくなり監視も楽になる。

win-winなツールが作成できたのかと思います。

(お客様側に運用で提案して適用できるかは交渉次第ですが、、、)

コメント

タイトルとURLをコピーしました