fingにより定期的にLANにつながっているホストについて一覧を記録する。
インストール
fingはこちらからダウンロードできる。ダウンロードしたファイルを実行すればインストールされる。途中でパスに追加するか聞かれる。パスに追加しておけばコマンドラインから実行パスを考えることなくfingを起動できる。ほかは難しいところはない。
確認
インストールが完了したらまずテストでfingを実行してスキャンが行われるかを確認する。fingの実行はバッチモードとインタラクティブモードがある。ここではインタラクティブモードを使う。
スタート→すべてのプログラム→Overlook Fing→fingを実行する。このとき”管理者として実行する”を選択すること。ファイルを出力したときに権限がないとスキャンは正常終了するが、ファイルが作成されない。エラーメッセージが出ないために原因が特定できない。
メニューが表示されるので下記のように実行する。
Do you want to (D)iscover, (S)can, (F)ingbox, (P)ing or display (I)nfos? > d Which network shall be monitored? Type a letter or a network. (A) Intel(R) PRO/1000 MT Network Connection 10.1.0.29/24 - Ethernet > How many rounds? > Do you want to discover domain names, (Y)es or (N)o? > Choose the file name to persist your discovery session. You may specify absolute paths. Type <Enter> for none. > Do you want a (L)og or (T)able output? > Which format do you prefer (html, csv, text, stext, xml, json)? > html Do you want to send the output to the (C)onsole or a (F)ile? > f Choose the file name (you may specify absolute paths). > aaaa Do you want to add another output, (Y)es or (N)o? > y Do you want a (L)og or (T)able output? > t Which format do you prefer (html, csv, text, stext, xml, json)? > stext Do you want to send the output to the (C)onsole or a (F)ile? > c Do you want to add another output, (Y)es or (N)o? > n === You have completed the procedure === The equivalent command is: fing -o table,html,aaaa -o table,stext,console Do you execute it now, (Y)es or (N)o? > y 18:42:43 > Discovery profile: Default discovery profile 18:42:43 > Discovery class: data-link (data-link layer) 18:42:43 > Discovery on: 10.1.0.0/24 18:42:43 > Discovery round starting. 18:42:44 > Discovery progress 25% 18:42:45 > Discovery progress 50% 18:42:45 > Discovery progress 75% ------------------------------------------------------------------------------- | State | Host | MAC Address | Last change | |-----------------------------------------------------------------------------| | UP | 10.1.0.0 | FF:FF:FF:FF:FF:FF | | | UP | 10.1.1.1 | 00:23:0D:35:90:41 | | | UP | 10.1.1.6 | E8:E7:32:98:E4:3C | |
途中でメッセージが出てくるが、このメニューで選択したコマンドは以下である。
fing -o table,html,aaaa -o table,stext,console
インタラクティブモードでいくつか命令を変えて実行すれば、コマンドラインに対するパラメータの設定について理解が深まる。
定期的に実行
では定期的に実行させて、記録をとる。一定間隔で実行する方法としては以下の3つがある。
- fingをコマンドラインから起動して繰り返し実行させる
- サービスとして実行する
- バッチを作成して、Windowsのタスクとして実行する。
1)は簡単である反面いくつかの問題点がある。この方法はコマンドラインからfingコマンドを実施するだけである。fingは一回立ち上がると構成ファイルに指定された間隔で実行を繰り返す。この実行間隔はdiscovery.propertiesの以下のパラメータである。デフォルトは1分間隔でありmsecで指定する。下記は1時間間隔に変更している。
profile.default.data-link.round.interval = 3600000
この方法では出力ファイルが常に上書きされてしまうこと、ユーザーが常にログオンしている状態であることが必要であるために柔軟性がない。
2)はサービスとして実行することでユーザーがログオンしていなくても常にスキャンが実施される。サービスに登録する方法は以下のコマンドを実行する。
fing -n 192.168.1.0/24 -o table,html,c:\report\lan.html --session c:\report\lansess --installservice FingService
fingのドキュメントに詳細が記載されている。
3)がもっとも柔軟性が高い。今回は以下の要件を満たしたかったのでこの方法を採用した。
- 最新版はhttpで参照できる
- ヒストリが残っている
まず以下のバッチファイルを作成する。
set time2=%time: =0% set serial=%date:/=%%time2:~0,2%%time2:~3,2%%time2:~6,2% fing -r 1 -o log,text table,stext table,html,"%USERPROFILE%\Desktop\finglog\network_%serial%.html" copy "%USERPROFILE%\Desktop\finglog\network_%serial%.html" C:\inetpub\wwwroot\network.html
ポイントは以下のとおり
- 実行した日時をファイル名の末尾につけているので実行結果が上書きされない
- fingで -r 1を指定している。一回実行したら処理を抜ける。このパラメータを指定しないとfingは繰り返しの処理に入るのでcopyコマンドに到達することがない。
- 実行結果をnetwork.htmlとしてhttpサーバーのパスにコピーしている。
このファイルをWindowsスケジューラに登録して一時間毎に実施する。このときユーザーはfingにパスが通っていてかつ管理者権限を持つユーザーにすること。タスクの設定でもっとも高い権限で実施するようにチェックボックスに指定する。