Pocket

仕事でオフィスのネットワーク管理をしていると、『誰がどのIPアドレスを使用しているのか』を管理しないといけないとこが多い。システム的な内部統制とか、情報漏えいを防ぐためとか、色々理由はあるんだけどね。
そのために払いだされているIPアドレスを管理する「IPアドレス一覧表」とかを使用するのだが、その一覧が本当に正しいかどうか定期的にチェックをする必要で、これがまた面倒くさい…。

この一覧が正しいかどうかのチェック、会社によるのかもしれないが「一覧に乗っているIPアドレスにひたすらpingを打つ(手動で。一個ずつ。)」という効率が悪い方法をとっているところもある(僕が所属していた会社もそうだった…)。

Sponsored Links

やっとられんわ!

なんて事は口にしないけど、手間がかかるのは事実。
大体会社勤めの場合、使用されるOSはWindowsだと思うんだけど、その場合pingコマンドを入力するのってコマンドプロンプトじゃないですか。UNIXとかだとコピペも簡単なんだけど、コマンドプロンプトって「貼り付け」するのに「Alt」+「スペース」⇒「E」⇒「P」と3ステップ必要になるんですよね
(「マウスからだったら貼り付けは1ステップで済むじゃないか」と言われるかもしれないが、かったるくてやってられないのである)。それをIPアドレス一個ずつ…手がつかれる…

 

Linuxのbashとかだと、「Ctrl」キーが使用できない代わりに「Alt」+「V」で貼り付けられるし、Macなら(今はOSXといった方がいいのか?)「コマンドキー」+「V」で可能なのに。

そこで、IPアドレスを連続でpingしていくようなバッチ(以下参照)を作ってみたりしたが、いまひとつしっくりこなかった。


<IPアドレス連続pingバッチ>

@echo off
set dt=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set tm1=%time: =0%
set tm2=%tm1:~0,2%%tm1:~3,2%%tm1:~6,2%

echo ※実行はローカルPCで!
echo 確認するLANのIPを第3オクテットまで入力
set /p a=”here/___/___/___>”
set /p b=”***/here/___/___>”
set /p c=”***/***/here/___>”
set name=%a%.%b%.%c%_%dt%_%tm2%

for /l %%i in (1,1,254) do ping -w 1 -n 1 %a%.%b%.%c%.%%i && arp -a %a%.%b%.%c%.%%i | findstr “動的 dynamic” >> %name%.txt


上のバッチ、指定されたIPアドレスの範囲、たとえば「192.168.0」と、第3オクテットまでを指定してやることで「192.168.0.1」~「192.168.0.254」までにひたすらpingを打ち続けて、その結果をバッチファイルが置いてあるフォルダに置くというものなんだけど、いくつか課題がある出来になっている。

  • 疎通確認のとれたIPアドレスの抽出に「arp」コマンドを使用しているが、このコマンドは自分のIPアドレスの抽出ができない
  • あくまでも第3オクテットまでが同じIPアドレスにのみPINGを打ち続けるだけで、任意のIPアドレスを指定できるような作りではない。
  • IPアドレスを元にPC名も欲しい
 大体こんな感じかな。
 1つ目、2つ目は全体的な作りを変える事で対処できるし、3つ目も「nbtstat」コマンドを利用することで対処できるような気もする。ただ、そこまでやるのであればVBAで作るのと対して変わりが無いので、どうせならばとExcelで作ることにした。たぶん、Exec関数を使用すればコマンドラインからpingその他を実行できるだろう。
 そうと決まれば、同じようなことを考えている人もいるだろうとググってみると、以下のページが見つかった。

なんと、VBAでpingそのものを作ったという。すごいなー。
さっそく使わせてもらおうとしたが、まともに動かない…どうやら、Windows7 の64bitだとうまく動かない様子。残念。

仕方がないので、当初の予定通りExec関数を使用して作ってみた。

 

 

そもそも、IPアドレスの一覧表にそういう機能つけときゃいいんだよ!と思ってたので、それも追加。さらにネットワーク図との紐付けもつけてみた(Excel用Ping関数 – ExcelでPingさんのサンプルに影響を受けただけ)。休日に何やってんだろ…。更にコレ初投稿だったよ。

まぁ、こんなブログ自分以外見てる人いないだろうけど、作ったExcelを上げておこう。

疎通確認.zip

検証は、
①検証環境1
OS:Windows 7 (64bit)
Office:Excel 2010 (64bit)

①検証環境1
OS:Windows 7 (32bit)
Office:Excel 2010 (32bit)

拡張子が「xlsx」なので、Office2003では未確認。また、コマンドプロンプトを使用しているのでMac版では動かないと思う。

欲しい方がいたら好きに使ってください。

追記:ちなみに、Linux等でコンピュータ名(というか、NetBIOS名)を確認するコマンドは「nmblookup」コマンド。
例) nmbklookup -A IPアドレス

更に追記:作成したExcel、オートシェイプに関するとこで一部問題あり。グループ化したオートシェイプを指定している場合、フォントをうまく編集できないことが分かった。
そのうち修正しようかな…。

運用上での対処としては、グループ化したオートシェイプの上にただの四角を置いて(非グループ化)、その四角を指定する方法で対処?

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。