VBA收集整理IP地址和MAC地址信息

  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)))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值