SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

複数のサーバーに Ping を送信するサンプルスクリプト

one comment

停電時のシャットダウン確認等で複数のサーバーに対して Ping を送る必要があるかもしれませんのでサンプルを投稿しておきたいと思います。

通常の Ping は IP アドレスを一つしか設定することができません。

image

WMI の [Win32_PingStatus] を使用した VBScript を使用することで複数のサーバーに Ping を実行したスクリプトを作成することが可能です。
# WScript.Echo Now() の箇所が途中で改行されてしまっていますが、一行で入力します。

aryTarget = Array(“192.168.0.1”, “192.168.0.2” )
intSleepms = 1000

If InStr(UCase(WScript.FullName), “WSCRIPT”) > 0 Then
    WScript.Echo “WScript では実行できません。CScriptを使用して実行してください。”
    WScript.Quit
End If

Do While (0=0)
    For Each strIP In aryTarget
        Set objWMIService = GetObject(“winmgmts:\.rootcimv2”)
        Set colItems = objWMIService.ExecQuery _
            (“Select * from Win32_PingStatus ” & _
                “Where Address = ‘” & strIP & “‘”)
        For Each objItem in colItems
            If objItem.StatusCode = 0 Then
            WScript.Echo Now() & “: ” & strIP & “: Reply received. bytes=”  &  objItem.BufferSize & “: time=” & objItem.ResponseTime & “: TTL=” & objItem.TimeToLive
            Else
                WScript.Echo Now() & “: ” & strIP & “: Request timed out.”         
            End If
        Next
    Next
    WScript.Sleep(intSleepms)
    WScript.Echo vbCrLf
Loop

aryTarget にカンマ (,) 区切りで対象サーバーを指定するとそのサーバーに対して Ping を実行するスクリプトになっています。

このスクリプトを CScript 経由で実行すると複数のサーバーに Ping を実行することができます。
# WScript で Echo を使うとメッセージボックスで表示されてしまって面倒なことになるので CScript からのみ許可しています。
image

複数のサーバーに Ping を発行するツールはいくつかあるかと思いますが、スクリプトベースでも実行できますので何かのご参考になるかもと思い投稿をしてみました。

Written by masayuki.ozawa

3月 14th, 2011 at 10:04 pm

Posted in Windows Server,ツール

Tagged with ,

One Response to '複数のサーバーに Ping を送信するサンプルスクリプト'

Subscribe to comments with RSS or TrackBack to '複数のサーバーに Ping を送信するサンプルスクリプト'.

  1. […] 以前投稿をしました、複数のサーバーに Ping を送信するサンプルスクリプト と組み合わせるとシャットダウン要求送信後にネットワークレベルで疎通確認ができるかと思いますので必要に応じてこちらもご利用いただければと。 […]

    VBScript でリモートコンピューターをシャットダウン « SE の雑記

    17 3月 11 at 08:06

Leave a Reply

*