IP地址和MAC地址对于网络管理的重要性,作为网管员最清楚。
需要处理资产信息时,有的资产编码无法对应到具体的计算机或者网络设备,这时就需要MAC地址来确定和比较。
做网络跟踪时,一般都需要涉及到具体的使用人,在确定具体的设备时绝大多数情况下都是根据MAC地址来一一对应。
网络和桌面的安全事件处理也涉及到具体设备,这肯定也是与MAC地址来对应,比如查找具体单位的计算机以及哪些计算机修改了IP地址等。
网络设备的管理一般情况下就是基于MAC地址的,至少是一个核心要素。
所以收集和整理相对完备的IP地址、MAC地址、使用人、使用单位、计算机硬软件信息表就是网管员一项不可或缺的工作。
很多人觉得简单,实际着手去实现却是很多人没有去做的。
具体实施过程:
①准备完整的MAC地址表;
可以从网管汇聚设备去提取,然后通过程序来提取。考虑到有的计算机没有开机,需要多个时间去提取。
②准备完整的单位设备信息表;
可以从安装的一些软件中提取,或者让用户提交。
用户一般比较懒惰,不愿意提交,可以先准备相对准确或者多一些的信息,让用户确认就好一些。
③一一对应形成完整的信息表。
根据MAC地址一一比较,进行信息填充或者修改。
下面的代码完成IP地址和MAC地址的对应表。
声明:
Option Explicit
Public MyNetworkInfo As NetworkInfo
Dim MaxRows As Integer
Public ws As Worksheet
Type NetworkInfo
IPAddr As String
MacAddr As String
End Type
通用函数:
Function GetNetworkInfo(ByVal Str As String) As NetworkInfo
Dim TempNetworkInfo As NetworkInfo
TempNetworkInfo.IPAddr = ""
TempNetworkInfo.MacAddr = ""
Dim regex As Object
Dim matches As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" 'IP地址
Set matches = regex.Execute(Str)
If matches.Count > 0 Then
TempNetworkInfo.IPAddr = matches(0)
End If
regex.Pattern = "\w{4}-\w{4}-\w{4}" 'MAC地址
Set matches = regex.Execute(Str)
If matches.Count > 0 Then
TempNetworkInfo.MacAddr = matches(0)
End If
GetNetworkInfo = TempNetworkInfo
End Function
Function SearchMac(ByVal StrMac As String) As String
'检查Mac地址是否已经存在表中
Dim cell As Range
SearchMac = ""
Set cell = ws.Range("C2:C2023").Find(What:=StrMac, LookIn:=xlValues, LookAt:=xlWhole)
If Not cell Is Nothing Then
'返回对应的IP
ws.Range("B" + Trim(Str(cell.Row))).Select
SearchMac = Selection.Formula
End If
End Function
主程序:
Sub Get_IPAndMAC()
'读取文件,逐行读取
Dim TempNetworkInfo As NetworkInfo
Dim ICount As Integer
Dim StrContent As String
Dim StrFile As String
Dim BeExist As Boolean
Dim NewIPAddr As String
Dim IRecordAdd As Integer
Set ws = Worksheets("IP_MAC")
MaxRows = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
StrFile = "从汇聚交换机读取的数据记录文件"
Open StrFile For Input As #1 '
Do While Not EOF(1)
Line Input #1, StrContent
TempNetworkInfo = GetNetworkInfo(StrContent)
If TempNetworkInfo.IPAddr <> "" And TempNetworkInfo.MacAddr <> "" Then
'判断这个Mac地址是否被记录
NewIPAddr = SearchMac(TempNetworkInfo.MacAddr)
If NewIPAddr = "" Then
'添加一条新记录
MaxRows = MaxRows + 1
ws.Range("B" & Trim(Str(MaxRows))).Select
Selection.FormulaR1C1 = TempNetworkInfo.IPAddr
ws.Range("C" & Trim(Str(MaxRows))).Select
Selection.FormulaR1C1 = TempNetworkInfo.MacAddr
Else
'标记IP地址改变
ws.Range("H" & Trim(Str(MaxRows))).Select
Selection.FormulaR1C1 = TempNetworkInfo.IPAddr
End If
Debug.Print TempNetworkInfo.IPAddr + "||||" + TempNetworkInfo.MacAddr
End If
Loop
Close #1
MsgBox "完成!"
End Sub
在信息收集完成后,可以通过写一个应用程序来完成后面的管理工作。
MAC地址有两种格式:AA-BB-CC-DD-EE-FF和AABB-CCDD-EEFF,在Excel中转换比较方便。
AA-BB-CC-DD-EE-FF转换为AABB-CCDD-EEFF:
UPPER(CONCATENATE(MID(C2,1,2),MID(C2,4,2),"-",MID(C2,7,2),MID(C2,10,2),"-",MID(C2,13,2),MID(C2,16,2)))
AABB-CCDD-EEFF转换为AA-BB-CC-DD-EE-FF:
=UPPER(CONCATENATE(MID(C2,1,2),"-",MID(C2,3,2),"-",MID(C2,6,2),"-",MID(C2,8,2),"-",MID(C2,11,2),"-",MID(C2,13,2)))