excel核对设备配置是否抓取完整 vbs代码

目录

需求

工作中,我们常会通过自动化手动自动记录log等方式抓取设备的配置,但我们可能遇到设备抓取可能不全。

同时,基于自动化的抓取一般都会存放到excel工作表中,以sheet表示不同的设备。

人工核对的工作量比较大,因此可以python编写脚本判断或excel vbs代码判断等方式。

由于我的环境不允许使用python,因此本文将分享一个vbs判断设备配置是否备份完整的代码。

方法

思考判断方式

由于设备是Cisco和H3C混用,因此最后的返回值是不太一样的。

  • Cisco
    Cisco设备 show running-config 后,最终的结果以end结尾,而设备名以#结尾(标准是在enable视图而非conf t视图进行show)
  • H3C
    H3C设备display current-configuration 后,最终的结果以return结尾,而设备名以<开头和>结尾。

不过我们只要根据最后一行输出结果,同时判断设备名是否输出出来,即可判断配置抓取是否完整。

  1. 脚本阅读到endreturn后,进行判断:
    1. end,判断下一行是否以#结尾;
    2. return,判断下一行是否以<开头和>结尾;
  2. 根据判断,如果上一步的12的返回值都是false,则返回false,否则就返回true

理清思路后,我们可以用各类AI进行代码生成,准确率很高(我就是这样做的)

代码

该代码会创建一个新的sheet,创建四列,第一列为IP、第二三列为return后存在设备名end后存在设备名,第四列为最终判断该设备是否配置抓取完整

vba 复制代码
Sub CheckReturnFollowedByBrackets()
    Dim ws As Worksheet
    Dim newSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim result As String
    Dim cellValue As String
    Dim resultRow As Long
    Dim returnResult As String
    Dim endResult As String
    Dim overallResult As String

    ' 创建一个新工作表,并将其移动到第一个工作表之前
    Set newSheet = ThisWorkbook.Worksheets.Add(Before:=ThisWorkbook.Sheets(1))
    newSheet.Name = "Results"
    
    ' 在新工作表中添加标题
    newSheet.Cells(1, 1).Value = "Sheet Name"
    newSheet.Cells(1, 2).Value = "Return Result"
    newSheet.Cells(1, 3).Value = "End Result"
    newSheet.Cells(1, 4).Value = "Overall Result"
    resultRow = 2

    ' 遍历所有工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 忽略结果工作表
        If ws.Name <> "Results" Then
            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            returnResult = "False"
            endResult = "False"
            overallResult = "False"

            ' 遍历第一列
            For i = 1 To lastRow
                If ws.Cells(i, 1).Value = "return" Then
                    If i + 1 <= lastRow Then
                        cellValue = ws.Cells(i + 1, 1).Value
                        If Left(cellValue, 1) = "<" And Right(cellValue, 1) = ">" Then
                            returnResult = "True"
                        End If
                    End If
                End If
                
                If ws.Cells(i, 1).Value = "end" Then
                    If i + 1 <= lastRow Then
                        cellValue = ws.Cells(i + 1, 1).Value
                        If Right(cellValue, 1) = "#" Then
                            endResult = "True"
                        End If
                    End If
                End If
            Next i
            
            ' 如果任一结果为 True,则整体结果为 True
            If returnResult = "True" Or endResult = "True" Then
                overallResult = "True"
            End If
            
            ' 将结果写入新工作表
            newSheet.Cells(resultRow, 1).Value = ws.Name
            newSheet.Cells(resultRow, 2).Value = returnResult
            newSheet.Cells(resultRow, 3).Value = endResult
            newSheet.Cells(resultRow, 4).Value = overallResult
            resultRow = resultRow + 1
        End If
    Next ws
End Sub

如何使用这个VBA代码:

  1. 打开你的Excel文件。
  2. Alt + F11 打开VBA编辑器。
  3. 在VBA编辑器中,点击 Insert -> Module 插入一个新模块。
  4. 将上面的代码粘贴到新模块中。
  5. 关闭VBA编辑器。
  6. 回到Excel,按 Alt + F8 打开宏对话框,选择 CheckReturnFollowedByBrackets,然后点击 运行

这个宏会遍历所有工作表,检查每个工作表中的第一列,找到值为 "return" 的单元格,并检查它的下一行是否以 "<" 开头并以 ">" 结尾。同时,它会找到值为 "end" 的单元格,并检查它的下一行是否以 "#" 结尾。结果会写入一个名为 "Results" 的新工作表中,并且如果某个工作表中任一结果为 "True",则在第四列输出 "True",否则输出 "False"。

结果

  • Sheet1是正常的测试,以return结尾,设备名输出正常,因此为True
  • Sheet2、6、3 均是模拟了缺漏配置,第四列输出为False
  • Sheet7是正常的测试,以end结尾,设备名输出正常,因此为True
相关推荐
爱研究的小梁3 分钟前
异构链路科普:5G/4G、卫星、专网、WiFi、光纤,如何聚合工作?
网络·网络协议·udp·信息与通信
A-刘晨阳8 分钟前
普通摄像头怎么加上 AI 监控?用 Frigate 把识别和事件管理放到绿联 NAS
运维
网硕互联的小客服12 分钟前
如何用Claude Code重构遗留系统?
网络
程序猿乐锅18 分钟前
【黑马点评 | 第二篇】Redis 缓存更新策略与商铺缓存实现
java·网络·redis·spring·mybatis
Doris__HE21 分钟前
【元脑服务器NF8480G7-NF8480M7技术规格分享】
运维·服务器·数据库·缓存·性能优化
可涵不会debug22 分钟前
公司外怎么连接管家婆?从 SQL Server 安装到 cpolar 固定 TCP 远程登录
linux·运维·ubuntu
科技小登23 分钟前
业务层四道闸:DDoS+CC、API、Bot 与全球加速的分层防护设计与选型
网络·安全
wuyk55523 分钟前
《WiFi 嵌入式物联网开发全套实战》| 第 12 章 Linux 系统 WiFi 常用命令全集:iw/iwlist/ip/wpa_cli 实战
linux·网络·stm32·物联网·tcp/ip
IT小白杨28 分钟前
跨境电商账号关联归因链路拆解与可落地环境配置
服务器·网络·经验分享·安全·指纹浏览器
运维全栈笔记30 分钟前
Nginx 模块化多业务站点通用配置模板
linux·运维·nginx