特定ホストへの`ping`応答の疎通結果をPowerShellで半自動化する

何台も手動でpingで疎通確認をするのは地味に面倒なので自動化します。

# Ping応答確認

# server list (0: IP address, 1: Server Name)
$server_list = @(
    @(
        "xxx.xxx.xxx.xxx",
        "Water Server"
    ),
    @(
        "yyy.yyy.yyy.yyy",
        "Beer Server"
    ),
    @(
        "zzz.zzz.zzz.zzz",
        "Drink Server"
    )
)

# loop
for($i = 0; $i -lt $server_list.Count; $i++) {
    if(Test-Connection $server_list[$i][0] -Quiet -Count 4) {
        Write-Host($server_list[$i][1] + ": booted!")
    }
    else {
        Write-Host($server_list[$i][1] + ": shutdowned...")
    }
}

こんなPowerShellを書いてShift-JISで保存(仮にwatchdog.ps1とします)。

rem WatchTower Library実行
echo プログラム開始

PowerShell .\watchdog.ps1

pause

rem WatchTower Library終了
echo プログラム終了

こんなbatをps1ファイルと同じフォルダに保存。あとはbatをダブルクリックすればOK。

頻繁に使うものでもないのでデータを外部に持たせるとかもせず雑に済ませました。これでも、少なくとも手動で叩いていくよりはマシかなぁ、と。

参考

PowerShellの構文

実行権限

bat

この記事を書いた人

アバター

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。