高速PINGコマンド

ミカサ

Vector ダウンロードサイト


                【 pingz.exe 】

【概要】

  pingz コマンドは、Raw socketを使って独自に作成した高速 ping コマンドです。
  コマンドプロンプト上で動作します。Windows OSの ping コマンドのターゲット
  が単一ホストであるのに対し、pingz コマンドは複数ホストをターゲットとして
  動作します。主な機能として、サブネット指定とIPアドレス一覧ファイル指定が
  あります。また、ログファイル保存機能やBeep音による通知機能の他、便利な
  オプション機能を多数備えています。

  スレッドを一切使わずに、複数リクエストの送信処理と複数レスポンスの
  受信処理を交互に実行させる事で、高速にもかかわらず、CPU負荷は殆ど上がら
  ないように作成しています。

  コマンドプロンプトの起動は「管理者として実行」を選択してください。
  ( ping の送信バッファサイズは 32Byte 固定です )

【書式】(※ pingz リターンで使用方法が表示されます)

  使用法: pingz [-option] ip_address [netmask/number]
      pingz [-option] -f file
      *) netmask省略時、netmask=255.255.255.255

  オプション:
      -p     アドレス空間を出力 (pingは実行しない)
      -b     実行結果がNGの場合は出力しない
      -B     実行結果がOKの場合は出力しない
      -m     実行結果がNGの場合、音を鳴らす
      -M     実行結果がOKの場合、音を鳴らす
      -d     nslookupの逆引き結果を出力
      -I     TTLの値を見て装置種別を出力
      -r     tracertの実行結果から通過ルートを出力
      -C     Ciscoライクな出力
      -q     RESULT行を出力しない
      -v     タイムスタンプを出力
      -l     ログファイルを出力
      -t 秒数   連続して繰り返し実行 (実行間隔を指定)
      -n 要求数  繰り返し回数を指定
      -e 秒数   継続実行時間を指定
      -w ミリ秒  タイムアウト時間を指定 (初期値=1000ms)
      -N     [-tne]指定時、2回目以降はNGの回線を対象とする
      -L     [-n]指定時、最終の実行結果のみを出力する
      -f     アドレス一覧ファイルを指定
      -o     [-f]オプション指定時、ファイルの内容を出力
      -T     [-f]オプション指定時、行末側のアドレスを使用する
      -P 要求数  コマンドを実行する連続NG回数を指定
      -Q 要求数  コマンドを実行する合計NG回数を指定
      -X コマンド [-P/Q]オプション指定時、実行するコマンドを指定

  例) pingz 192.168.1.1 255.255.255.240
     pingz 192.168.1.1/255.255.255.240
     pingz 192.168.1.1 28
     pingz 192.168.1.1/28
     pingz -f address.txt
     pingz -f address.txt -o
     pingz -f address.txt -oBqv -t 5 -P 12 -X notify.bat

【オプション】

  基本的にオプションはコマンド内の何処にあっても読み取ります。

   pingz -p 192.168.1.1 24
   pingz 192.168.1.1 24 -p

  またオプションを連続して一括指定する事も可能です。
  ただし、パラメータを指定する必要があるオプションを除きます。

   pingz 192.168.1.1 24 -b -v -I -t 1
   pingz 192.168.1.1 24 -bvI -t 1

  -p IPアドレス一覧を出力します。pingコマンドは実行しません。
    サブネット内のIPアドレス空間を確認する場合に使用します。(推奨)
    リダイレクト'>'でIPアドレス一覧をファイルに出力したい場合も
    有効です。Windows標準コマンドの clip を使ってクリップボードに
    コピーする使い方も便利です。

    pingz 192.168.1.1 24 -p > file
    pingz 192.168.1.1 24 -p | clip

  -b ping実行結果が「NG」の場合、結果を出力しません。実行結果が
    「OK」のものだけを抽出したい時に便利です。

  -B ping実行結果が「OK」の場合、結果を出力しません。実行結果が
    「NG」のものだけを抽出したい時に便利です。

  -m ping実行結果が「NG」の場合、Beep音を鳴らします。音声により
    「NG」の発生を確認したい時に便利です。

  -M ping実行結果が「OK」の場合、Beep音を鳴らします。音声により
    「OK」の発生を確認したい時に便利です。

  -d 試験結果の行末にnslookupの逆引き結果を追記します。

    (この処理はWindows標準の nslookup.exe コマンドを使用しますので、処理は遅くなります)

    192.168.1.1  192.168.1.1 からの応答: バイト数 =32 時間 =14ms TTL=56 [dns.system.co.jp]

  -I TTLの値を見て装置種別(Windows,Linux,NW機器)を行末に追記します。

     192.168.1.1  192.168.1.1 からの応答: バイト数 =32 時間 =14ms TTL=56  (Linux)
     192.168.1.2  192.168.1.2 からの応答: バイト数 =32 時間 =14ms TTL=125 (Windows)

     ttl<=64 "(Linux)"
     ttl<=128 "(Windows)"
     ttl<=255 "(NW)"

  -r tracertの実行結果から通過ルートを出力します。

    (この処理はWindows標準の ping.exe コマンドを使用しますので、処理は遅くなります)

    ---192.168.3.1---216.58.215.255---108.170.242.161---72.14.237.223---216.58.197.227
    ---192.168.3.1---61.206.157.74---124.83.252.242---114.111.65.10---183.79.123.210

    -d オプションと併用すると、IPアドレスをホスト名に変換して表示させる事が可能です。
    ただし、以下のファイルにIPアドレスとホスト名の対応が記載されているもののみです。

    C:\Windows\System32\drivers\etc\hosts

    ---ThisPC---DefaultGW---AAAAA---BBBBB---72.14.237.223---216.58.197.227
    ---ThisPC---DefaultGW---CCCCC---DDDDD---114.111.65.10---183.79.123.210

  -C Cisco制RT/SW上の ping 機能と同様に、単一ホストに対して連続
    ping を実施し、結果をOK='!' NG='.'で表示します。回線輻輳に
    よるパケット落ちを確認する際に便利です。

    !!!!!!!!!!!!!!!!!!!...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  -q ping 実行結果を表す RESULT 行を出力しません。長時間に渡る周
    期的な ping 実行時のログを、見やすくしたい際に指定します。
    (-B オプションと併用して使用する事を想定しています)

  -v ping実行時のTimeStampを出力します。[-l]オプションとセットで
    使用すると実行時間がログに残るので便利です。

  -l ログファイルを作成します。コマンドを実行したフォルダ上に次の
    ようなファイル名で保存されます。(pingz_年月日-時分秒.log)
    基本的に標準出力と同じ結果がログファイルに保存されます。

  -t 連続して繰り返し実行します。単体アドレス指定に限らずサブネット
    指定でもIPアドレス一覧ファイル指定でも繰り返し実行します。
    パラメータとして実行間隔[秒>=0]を指定します。

  -n pingの繰り返し回数を指定します。自動的に[-t 0]オプションも指定
    されます。[-t]オプションを明記すると実行間隔を変更できます。

  -e pingの終了時間を[秒数]で指定します。自動的に[-t 0]オプションも
    指定されます。( 1時間連続で実行する場合、3600 を指定します )
    [-t]オプションを明記すると実行間隔を変更できます。

  -w タイムアウト時間(ミリ秒)を変更する際に指定します。(初期値=1000ms)

  -N [-t/-n/-e]等の連続指定時、2回目以降はNGホストのみを対象にping
    を実施します。これは対象とするホストが膨大にある場合、NGホストの
    探索を効率良く実施する際に使用します。
    (-B オプションと併用して使用する事を想定しています)

  -L [-n]の連続指定時、最終の実行結果のみを出力します。
    これは[-N]オプションと併用して使用する事を想定しており、
    PING応答が1回もないホストの一覧を収集する場合や、
    PING応答が1回でもあったホストの一覧を収集する場合等です。

  -f IPアドレス一覧ファイルを指定する場合のオプションです。
    1行毎にIPアドレスを記載しますが、日本語を含む他の文字がIPアドレスの
    前後にあっても自動的にIPアドレスを検知します。
    ただし、複数存在する時は行頭に近い方を採用します。
    また、'#'を記載するとその文字以降をコメントとして扱います。

    ファイル行数の制限は65,536になります。最大35,000行で動作させた実績があります。
    1行の文字数制限は半角で250文字までです。

  -o [-f]オプション指定時、IPアドレス一覧ファイルの各行をコメント
    を含めてそのまま出力し、行頭にping実行結果を記号で表示します。

     * 192.168.16.100 server100.local [OKの場合]
      192.168.16.101 server101.local [NGの場合]
     ! 192.168.16.102 server102.local [OTHERの場合]

    OTHERとは、pingの応答はあったが、指定したIPアドレスからの応答では
    ない場合を示しています。

  -T [-f]オプション指定時、IPアドレスが行内に複数存在する際は
    行末に近い方のIPアドレスを採用します。

  -P 特定コマンドを実行したい際のトリガとなる連続NG回数を指定します。
    連続NG回数を表す "NG=数字" が行末に表示されます。この表示だけを
    実施させたい場合は "-P 0" とでも記載してください。

  -Q 特定コマンドを実行したい際のトリガとなる合計NG回数を指定します。
    合計NG回数を表す "NT=数字" が行末に表示されます。この表示だけを
    実施させたい場合は "-Q 0" とでも記載してください。

  -X [-P/Q]オプション指定時に実行したい特定コマンドを指定します。
    (ポップアップ画面出力や音声再生を想定しています)

    ========================================================
    # ポップアップ画面出力 サンプル
    # pingz 192.168.0.1 -t 1 -P 5 -X 画面出力.vbs
    ========================================================
    MsgBox "故障発生", 48+4096, "警告"

    ========================================================
    # 音声再生スクリプト サンプル
    # pingz 192.168.0.1 -t 1 -P 5 -X 音声再生.vbs
    ========================================================
    Set player = CreateObject("WMPlayer.OCX")
    player.URL = "C:\PINGZ\故障が発生しました.wav"
    player.Settings.Volume = 100
    player.Controls.Play
    While player.PlayState <> 1
     WScript.Sleep(100)
    WEnd
    Set player = Nothing

  ■■■■ 常時監視を行う方法 ■■■■

  pingz コマンドを使って常時監視を行う方法を説明します。
  WindowsサーバやWindowsパソコン上で、バックグラウンドの監視を行ないます。
  エラーが発生すると年月日名のファイルにログが蓄積されます。
  また、指定されたメールアドレスにエラー内容を通知します。

  ================================
  # PINGZ フォルダを作成します
  ================================
  C:\>mkdir C:\PINGZ

  ================================
  # C:\PINGZ\LIST をエディターで作成します
  ================================
  (例)
  210.172.40.1 www.ntt-west.co.jp
  23.42.73.251 www.ntt.com
  106.162.242.107 www.kddi.com
  23.218.23.22 www.softbank.jp
  216.58.197.163 www.google.co.jp
  182.22.24.252 www.yahoo.co.jp

  ================================
  # C:\PINGZ\start_pingz.vbs をエディターで作成します
  ================================
  Set objWS = CreateObject("WScript.Shell")
  objWS.CurrentDirectory = "C:\PINGZ"
  Return = objWS.Run("command.bat", vbHide, False)
  Set objWS = Nothing

  ================================
  # C:\PINGZ\command.bat をエディターで作成します
  ================================
  @echo off
  set D=%date%
  set DD=%D:~0,4%%D:~5,2%%D:~8,2%
  pingz -f LIST -oNBqv -n 4 -t 1 -P 0|find "NG=4" > LOG
  for /f %%L in ('type LOG ^| find /c /v ""') do set LINE=%%L
  if %LINE% geq 1 type LOG >> %DD%.log & send_mail.vbs
  del /f LOG

  ================================
  # C:\PINGZ\send_mail.vbs をエディターで作成します
  ================================
  Set objFS = CreateObject("Scripting.FileSystemObject")
  Set fp = objFS.OpenTextFile("C:\PINGZ\LOG", 1)
  BUF = Now & vbCrLf
  BUF = BUF & "PINGZ試験でエラーを検知しました" & vbCrLf
  BUF = BUF & vbCrLf
  BUF = BUF & fp.ReadAll
  BUF = BUF & vbCrLf
  fp.Close
  Set fp = Nothing
  Set objFS = Nothing
  Set objCM = CreateObject("CDO.Message")
  objCM.From = "●メールアドレス"
  objCM.To = "●メールアドレス"
  objCM.Subject = "●【システム名】故障が発生しました"
  objCM.TextBody = BUF
  URL = "http://schemas.microsoft.com/cdo/configuration/"
  objCM.Configuration.Fields.Item(URL & "sendusing") = 2
  objCM.Configuration.Fields.Item(URL & "smtpserver") = "●SMTPサーバアドレス"
  objCM.Configuration.Fields.Item(URL & "smtpserverport") = ●SMTPポート番号
  objCM.Configuration.Fields.Item(URL & "smtpusessl") = ●True/Flase
  objCM.Configuration.Fields.Item(URL & "smtpauthenticate") = 1
  objCM.Configuration.Fields.Item(URL & "sendusername") = "●ユーザID"
  objCM.Configuration.Fields.Item(URL & "sendpassword") = "●パスワード"
  objCM.Configuration.Fields.Update
  objCM.Send
  Set objCM = Nothing

  ================================
  # ファイルを確認します
  ================================
  C:\>dir /B C:\PINGZ
  command.bat
  LIST
  pingz.exe
  send_mail.vbs
  start_pingz.vbs

  ================================
  # タスク スケジューラに登録します
  ================================
  コントロールパネル>管理ツール>タスク スケジューラ>タスク スケジューラ ライブラリ>タスクの作成
  
  [全般タブ]
  《名前》に[PINGZ監視]と記入
  
  [トリガー]
  《新規》
  《1回》を選択し、開始日時を設定
  《繰り返し間隔》をチェックし、[5分間]を選択
  《継続時間》は[無期限]を選択
  《OK》
  
  [操作]
  《新規》
  《参照》[C:\PINGZ\start_pingz.vbs]を選択
  《開く》
  《OK》
  
  以上です


【インストール方法】

  "C:\WINDOWS\system32" 配下に「pingz.exe」ファイルをコピーするだけです。
   ( Path が設定されているフォルダであれば何処でもOKです )

【アンインストール方法】

  コピーした「pingz.exe」ファイルを削除するだけです。

========================================================================
 pingz.exe は基本版と拡張版があり、基本版はフリーソフトですが、
 拡張版はシェアウェアになっています。

 基本版と拡張版には以下の違いがあります。
 ・指定できるサブネットマスク長が 32bit〜25bit (拡張版は 32bit〜16bit)
 ・ファイル指定事のファイル行数が 128 行まで (拡張版は 65536 行まで)
========================================================================