忍者ブログ

IPアドレスリストに対してPingを打って、結果を追記する手順

2023年03月28日
IPアドレスのリストが手元にあって、
それらの機器が生きているか確認したくなることがある。

コマンドプロンプトでPingコマンドを実行すれば結果はわかるけど、
1件ずつ手作業で打って、結果をコピペしていくのはやってられない。


今回は、リストをもとにPingを実行して、結果を追記する手順について
こういう作業って一発ものだからわざわざプログラムを組むのは無駄かも。

大まかな手順は以下のとおり。




【Pingを打って結果を追記する手順】

1.IPアドレスリストをもとにPingコマンドを作成する。

2.1をPingコマンドの実行結果を特定のテキストファイルに追記するコマンドに修正する。

3.コマンドプロンプトで用意したコマンドを実行する。

4.テキストエディタを使って結果を編集する。

5.編集した結果をエクセルの別シートに貼り付ける。

6.別シートを参照する数式を追記する。


下調べで、Pingコマンドの実行結果を1行で表示する方法なんかを調べてみたものの
かなりテクニカルなバッチファイルを用意することになるし、
思うような結果が出なかったので断念。

諦めてオーソドックスなやり方をしたら意外に簡単にできた。

では、順番に説明。



1.IPアドレスリストをもとにPingコマンドを作成する。

使うPingコマンドのオプションは、以下の2つ。

①回数を指定する/n 「ping /n 1 」:1回だけPingを打つ。
②タイムアウト時間を指定する/w 「ping /w 200」:200ms応答を待つ

IPアドレスが書かれたセルを参照して、
="ping /w 200 /n 1 " & [IPアドレスセル]



2.1をPingコマンドの実行結果を特定のテキストファイルに追記するコマンドに修正する。

結果を書き込むには、「 >> フルファイル名」を指定すればよい。
コマンド1つ1つの結果を追記してくれる。1行目は新規で保存する「 > 」の方がいい。

="ping /w 200 /n 1 " & [IPアドレスセル] & " >> " & [フルファイル名セル(絶対参照)]

コピペするので、絶対参照の$を使うこと。




3.コマンドプロンプトで用意したコマンドを実行する。

2の数式をコピペするだけ。



4.テキストエディタを使って結果を編集する。

応答の有無によらず「[IPアドレス] に ping を送信しています 32 バイトのデータ:」
というメッセージの後に結果が表示される。

1行で表現したいので、改行をタブに置換。
otbeditを使って、正規表現ありにチェックを入れて指定。
共通メッセージは邪魔なのでついでに消す。

検索文字列「 に ping を送信しています 32 バイトのデータ:\n」
置換文字列「\t」


タイムアウト例
192.168.10.5 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。

正常応答例
192.168.10.2 に ping を送信しています 32 バイトのデータ:
192.168.10.2 からの応答: バイト数 =32 時間 <1ms ttl="128<br">



5.編集した結果をエクセルの別シートに貼り付ける。

4の結果はタブ区切りになっているので、
エクセルに貼り付ければ2列データで表示してくれる。




6.別シートを参照する数式を追記する。

=vlookup(IPアドレス、Ping結果の範囲、2、0)



テキストエディタとエクセル関数を組み合わせるだけで
大体のことはできちゃうね。



PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字