« ワイシャツにカフスボタンはお使いですか? | メイン | QRコード掲載してみました! »

2005年07月01日 (金曜日)

IPアドレス情報収集ツール (小技ツール) - 8.テクニカルガイド

ネットワークセグメント内の全ての機器の、IPアドレス・MACアドレス情報を収集するツール(バッチファイル)です。本ツールを実行することで、各機器を一台づつ手動で調査することから解放されます。
※ただし、対象機器の電源はOn状態となっている必要があり、電源Offの場合は検出できずに調査対象外となってしまいますので注意が必要です。

【解説】
ICMP Echo、pingコマンドを発行しIPパケットを送信すると、それに先立ちまずARPによるやりとりが行われ、相手先のMACアドレス情報がローカルARPテーブルに登録されます。arpコマンドはARPテーブルの内容を表示させることができるので(arp -a)、このテーブルの中に目的のIPアドレスがあるかを調査することで、該当するIPアドレスが使用中か否かを判断できます。

よって、IPアドレスに向けてpingを実行し、直後にarpコマンドで確認すれば良いのです。なお、なぜ直後にarpコマンドかは、ARPテーブルに登録されたARPエントリの寿命が、通常は数分から10分程度となるからで、最初にpingをまとめて実行しておいてから、あとでじっくりARPテーブルの内容を調査しても、テーブルから既に削除されている可能性があるためです。

@echo off

title Network Tools - ipusecheck.bat
REM ■ICMP Echo(Ping)とArpテーブルを取得することでIPアドレス情報を収集する
REM ■下位8ビットホスト部をカウントアップしながら開始アドレスを指定する → (開始番号,増分,終了番号)
for /l %%i in (1,1,254) do echo Pinging 192.168.1.%%i with 32 bytes of data: && ping -w 1 -n 1 192.168.1.%%i >> arp.log && arp -a 192.168.1.%%i >> arp.log

REM ■収集結果の状態を整形する
arp -a > headdummy.log
findstr "Interface: Address" headdummy.log > ipmaclist.txt
findstr "dynamic" arp.log >> ipmaclist.txt
del headdummy.log arp.log

REM ■IPアドレス情報の収集結果を表示
echo .
type ipmaclist.txt
echo .

pause
exit /b

【コマンドの説明】
> 「ping -w 1 -n 1 192.168.0.%i」 → 待ち時間1(=1ms)で1回だけpingを実行
> 「arp -a 192.168.1.%%i」 → そのIPアドレスのARPテーブルのエントリを表示

wrote by ootani : 2005年07月01日 07:24

Copyright © 2002-2008 by Satoshi Ootani, All Rights Reserved.