From 096e7524590f461fc6073af95364b14170713c04 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 26 Apr 2026 01:20:00 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20=E6=B7=BB=E5=8A=A0=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E7=9A=84MAC=E5=9C=B0=E5=9D=80=E8=A7=A3=E6=9E=90=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 输出邻居MAC解析详情 - 输出每个接口的MAC地址状态 - 输出收集的MAC地址总数 - 帮助诊断为什么MAC地址为空 --- internal/device/h3c.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/device/h3c.go b/internal/device/h3c.go index c2695ac..db8399b 100644 --- a/internal/device/h3c.go +++ b/internal/device/h3c.go @@ -47,11 +47,14 @@ func (p *H3CParser) Parse(device *models.Device, outputs []string) error { for _, iface := range device.Interfaces { if iface.MAC != "" { macSet[iface.MAC] = true + } else { + fmt.Printf(" Interface %s has no MAC address\n", iface.Name) } } for mac := range macSet { device.MACAddresses = append(device.MACAddresses, mac) } + fmt.Printf(" Collected %d unique MAC addresses for device %s\n", len(macSet), device.IP) } // 解析ARP表用于MAC到IP映射(允许失败) @@ -289,6 +292,7 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) [] mac := strings.TrimSpace(strings.ToLower(macParts[0])) // 保存MAC地址 currentNeighbor.RemoteMAC = mac + fmt.Printf(" Parsed neighbor MAC: %s (from line: %s)\n", mac, line) // 通过ARP表查找IP(如果有) if ip, ok := arpTable[mac]; ok { @@ -298,7 +302,11 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) [] // 如果ARP表中没有,使用MAC地址作为标识(但RemoteIP仍为空) currentNeighbor.RemoteDevice = mac } + } else { + fmt.Printf(" WARNING: Could not parse MAC from ChassisID line: %s\n", line) } + } else { + fmt.Printf(" WARNING: ChassisID line has no colon: %s\n", line) } }