這個方案使用了Microsoft.net技術,同時也用到了.NET Framework中的,ADO.NET ,WMI management,XML。其核心是一個由VB.NET寫的程序以及它的兩個配置文件,配置文件為XML格式,該程序按IP掃描網絡,得到每個系統的服務 的狀態,如果IP地址沒有對應系統,則忽略該IP,針對沒有安裝服務或服務停止的系統我們在另一個線程中運行NBTSTAT命令,得到其機器名,用戶名,MAC地址域等信息,以便我們找到機器解決問題。其次為了保存掃描的結果,我們需要一個很小的數據庫MS-Access或MS-SQL Server都可以,本文使用SQL2000 。最后為了呈現出掃描的結果,以便我們采取行動,這里我們使用網頁的形式把數據庫中的結果展現出來。
1. VB.net程序
該程序使用兩個XML格式的配置文件,當程序啟動時會讀入這些配置。其中一個文件定義了需要掃描的網段,包括排除在外的地址段。另一個文件定義了連接數據庫的信息,以及數據表的定義。這兩個文件的內容如下:
<IPLIST>
<IP LANID="192.168.100." ><EXP L="1" H="30"/></IP>
<IP LANID="192.168.101." />
<IP LANID="192.168.102." />
<IP LANID="192.168.103." />
<IP LANID="192.168.104." ><EXP L="1" H="40"/></IP>
</IPLIST>
該文件定義將要掃描5個網段,其中兩個網段有些地址需要排除在外(分配給打印機等設備),對于192.168.100段,我們排除從1到30,對于192.168.104段我們排除1到40。
該文件定義了連接數據庫所需的信息。
該TAG的屬性定義了數據庫中表名,該表用于保存掃描結果
以下是程序代碼:
可以利用如下命令在DOS窗口啟動該程序。
Scanservice -i iplist.xml -d dbinfo.xml
2. SCANSERVICE 數據庫
該數據庫保存保存程序運行結果,以便用Web等方式展現出來。以下是建立表的腳本,包含域名,用戶名,機器名,IP以及服務狀態。
CREATE TABLE [dbo].[Service] (
[IP] [varchar] (50) NULL ,
[狀態] [varchar] (50) NULL ,
[用戶名] [varchar] (50) NULL ,
[機器名] [varchar] (50) NULL ,
[MAC地址] [varchar] (50) NULL ,
[域] [varchar] (50) NULL ,
[超時] [varchar] (10) NULL ,
[時間安] [DateTime] (8) NULL ,
)
總結:
以上是一個完整的方法,也是比較簡單明晰的解決方法,如果要求技巧和性能的話,還有一些地方可以做些改進,比如對線程池的使用。另外還有一些方面需要大家自己完成,比如將數據庫中的信息以WEB的方式展現出來。