Ver código fonte

feat: 增强拓扑匹配算法,支持多重匹配策略

- 添加5重匹配策略:IP直连、主机名、MAC地址、子网匹配、接口描述
- 实现智能子网匹配:仅当网段只有2台设备时才使用(避免歧义)
- 修复JSON配置文件尾随逗号问题
- 修复devices.json解析错误
- 优化邻居匹配逻辑,提升拓扑连接准确性

修复问题:
- 解决LLDP邻居MAC无法匹配设备的问题
- 解决ARP表解析返回0条记录的问题
- 解决设备之间无法建立拓扑连接的问题

当前成果:
- 5个设备节点正确显示
- 3条拓扑边正确建立(172.16.8.6↔172.16.8.1, 172.16.8.8↔172.16.8.6, 172.16.8.9↔172.16.8.6)
Your Name 1 mês atrás
pai
commit
e2f804ac52
3 arquivos alterados com 3834 adições e 113 exclusões
  1. 3607 0
      devices.json
  2. 82 97
      internal/device/h3c.go
  3. 145 16
      internal/topology/builder.go

+ 3607 - 0
devices.json

@@ -0,0 +1,3607 @@
+[
+  {
+    "id": "172.16.8.8",
+    "ip": "172.16.8.8",
+    "type": "h3c",
+    "hostname": "BJ-Access08",
+    "os_version": "H3C Comware Software, Version 7.1.070, Release 6312P01",
+    "uptime": "16 weeks,",
+    "interfaces": [
+      {
+        "name": "FortyGigE1/0/53",
+        "description": "FortyGigE1/0/53 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24e1",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "FortyGigE1/0/54",
+        "description": "FortyGigE1/0/54 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24e6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/1",
+        "description": "GigabitEthernet1/0/1 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24ad",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/2",
+        "description": "GigabitEthernet1/0/2 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24ae",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/3",
+        "description": "GigabitEthernet1/0/3 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24af",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/4",
+        "description": "GigabitEthernet1/0/4 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b0",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/5",
+        "description": "GigabitEthernet1/0/5 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b1",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/6",
+        "description": "GigabitEthernet1/0/6 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/7",
+        "description": "GigabitEthernet1/0/7 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b3",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/8",
+        "description": "GigabitEthernet1/0/8 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b4",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/9",
+        "description": "GigabitEthernet1/0/9 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/10",
+        "description": "GigabitEthernet1/0/10 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/11",
+        "description": "GigabitEthernet1/0/11 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/12",
+        "description": "GigabitEthernet1/0/12 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/13",
+        "description": "GigabitEthernet1/0/13 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24b9",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/14",
+        "description": "GigabitEthernet1/0/14 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24ba",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/15",
+        "description": "GigabitEthernet1/0/15 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24bb",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/16",
+        "description": "GigabitEthernet1/0/16 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24bc",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/17",
+        "description": "GigabitEthernet1/0/17 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24bd",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/18",
+        "description": "GigabitEthernet1/0/18 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24be",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/19",
+        "description": "GigabitEthernet1/0/19 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24bf",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/20",
+        "description": "GigabitEthernet1/0/20 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c0",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/21",
+        "description": "GigabitEthernet1/0/21 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c1",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/22",
+        "description": "GigabitEthernet1/0/22 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/23",
+        "description": "GigabitEthernet1/0/23 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c3",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/24",
+        "description": "GigabitEthernet1/0/24 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c4",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/25",
+        "description": "GigabitEthernet1/0/25 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/26",
+        "description": "GigabitEthernet1/0/26 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c6",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/27",
+        "description": "GigabitEthernet1/0/27 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/28",
+        "description": "GigabitEthernet1/0/28 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/29",
+        "description": "GigabitEthernet1/0/29 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24c9",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/30",
+        "description": "GigabitEthernet1/0/30 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24ca",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/31",
+        "description": "GigabitEthernet1/0/31 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24cb",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/32",
+        "description": "GigabitEthernet1/0/32 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24cc",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/33",
+        "description": "GigabitEthernet1/0/33 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24cd",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/34",
+        "description": "GigabitEthernet1/0/34 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24ce",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/35",
+        "description": "GigabitEthernet1/0/35 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24cf",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/36",
+        "description": "GigabitEthernet1/0/36 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d0",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/37",
+        "description": "GigabitEthernet1/0/37 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d1",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/38",
+        "description": "GigabitEthernet1/0/38 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/39",
+        "description": "GigabitEthernet1/0/39 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d3",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/40",
+        "description": "GigabitEthernet1/0/40 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d4",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/41",
+        "description": "GigabitEthernet1/0/41 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/42",
+        "description": "GigabitEthernet1/0/42 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/43",
+        "description": "GigabitEthernet1/0/43 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/44",
+        "description": "GigabitEthernet1/0/44 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/45",
+        "description": "GigabitEthernet1/0/45 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24d9",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/46",
+        "description": "GigabitEthernet1/0/46 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24da",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/47",
+        "description": "GigabitEthernet1/0/47 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24db",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/48",
+        "description": "GigabitEthernet1/0/48 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24dc",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/49",
+        "description": "GigabitEthernet1/0/49 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24dd",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/50",
+        "description": "M-GigabitEthernet0/0/0 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-2487",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "NULL0",
+        "description": "Register-Tunnel0 Interface",
+        "ip": "UP",
+        "mask": "",
+        "mac": "",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/51",
+        "description": "Ten-GigabitEthernet1/0/51 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-24df",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/52",
+        "description": "Vlan-interface16 Interface",
+        "ip": "10.16.16.8",
+        "mask": "255.255.252.0",
+        "mac": "642f-c7e0-249d",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      }
+    ],
+    "neighbors": [
+      {
+        "local_interface": "Ten-GigabitEthernet1/0/51",
+        "remote_device": "642f-c7e0-02cb",
+        "remote_ip": "",
+        "remote_mac": "642f-c7e0-02cb",
+        "remote_interface": "Ten-GigabitEthernet1/0/52",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "Ten-GigabitEthernet1/0/52",
+        "remote_device": "642f-c7df-f83b",
+        "remote_ip": "",
+        "remote_mac": "642f-c7df-f83b",
+        "remote_interface": "Ten-GigabitEthernet1/0/51",
+        "protocol": "LLDP"
+      }
+    ],
+    "mac_addresses": [
+      "642f-c7e0-24df",
+      "642f-c7e0-249d",
+      "642f-c7e0-24b0",
+      "642f-c7e0-24be",
+      "642f-c7e0-24cf",
+      "642f-c7e0-24d0",
+      "642f-c7e0-24d5",
+      "642f-c7e0-2487",
+      "642f-c7e0-24ad",
+      "642f-c7e0-24b7",
+      "642f-c7e0-24ba",
+      "642f-c7e0-24c1",
+      "642f-c7e0-24c8",
+      "642f-c7e0-24cd",
+      "642f-c7e0-24ce",
+      "642f-c7e0-24d7",
+      "642f-c7e0-24b1",
+      "642f-c7e0-24b3",
+      "642f-c7e0-24c0",
+      "642f-c7e0-24c5",
+      "642f-c7e0-24c6",
+      "642f-c7e0-24c9",
+      "642f-c7e0-24ca",
+      "642f-c7e0-24cb",
+      "642f-c7e0-24b6",
+      "642f-c7e0-24bd",
+      "642f-c7e0-24cc",
+      "642f-c7e0-24d1",
+      "642f-c7e0-24dc",
+      "642f-c7e0-24af",
+      "642f-c7e0-24b5",
+      "642f-c7e0-24bb",
+      "642f-c7e0-24d2",
+      "642f-c7e0-24d4",
+      "642f-c7e0-24c4",
+      "642f-c7e0-24e1",
+      "642f-c7e0-24e6",
+      "642f-c7e0-24b2",
+      "642f-c7e0-24b4",
+      "642f-c7e0-24d3",
+      "642f-c7e0-24d8",
+      "642f-c7e0-24da",
+      "642f-c7e0-24ae",
+      "642f-c7e0-24b8",
+      "642f-c7e0-24b9",
+      "642f-c7e0-24bc",
+      "642f-c7e0-24bf",
+      "642f-c7e0-24d9",
+      "642f-c7e0-24db",
+      "642f-c7e0-24dd",
+      "642f-c7e0-24c2",
+      "642f-c7e0-24c3",
+      "642f-c7e0-24c7",
+      "642f-c7e0-24d6"
+    ],
+    "last_scanned": "2026-04-26T05:07:07.6098313+08:00",
+    "scan_status": "success"
+  },
+  {
+    "id": "172.16.8.9",
+    "ip": "172.16.8.9",
+    "type": "h3c",
+    "hostname": "BJ-Access09",
+    "os_version": "H3C Comware Software, Version 7.1.070, Release 6312P01",
+    "uptime": "16 weeks,",
+    "interfaces": [
+      {
+        "name": "FortyGigE1/0/53",
+        "description": "FortyGigE1/0/53 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0329",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "FortyGigE1/0/54",
+        "description": "FortyGigE1/0/54 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-032e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/1",
+        "description": "GigabitEthernet1/0/1 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02f5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/2",
+        "description": "GigabitEthernet1/0/2 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02f6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/3",
+        "description": "GigabitEthernet1/0/3 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02f7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/4",
+        "description": "GigabitEthernet1/0/4 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02f8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/5",
+        "description": "GigabitEthernet1/0/5 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02f9",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/6",
+        "description": "GigabitEthernet1/0/6 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02fa",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/7",
+        "description": "Printer",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02fb",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/8",
+        "description": "GigabitEthernet1/0/8 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02fc",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/9",
+        "description": "GigabitEthernet1/0/9 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02fd",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/10",
+        "description": "GigabitEthernet1/0/10 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02fe",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/11",
+        "description": "GigabitEthernet1/0/11 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02ff",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/12",
+        "description": "GigabitEthernet1/0/12 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0300",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/13",
+        "description": "GigabitEthernet1/0/13 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0301",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/14",
+        "description": "GigabitEthernet1/0/14 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0302",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/15",
+        "description": "GigabitEthernet1/0/15 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0303",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/16",
+        "description": "GigabitEthernet1/0/16 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0304",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/17",
+        "description": "GigabitEthernet1/0/17 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0305",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/18",
+        "description": "GigabitEthernet1/0/18 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0306",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/19",
+        "description": "GigabitEthernet1/0/19 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0307",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/20",
+        "description": "GigabitEthernet1/0/20 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0308",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/21",
+        "description": "GigabitEthernet1/0/21 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0309",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/22",
+        "description": "GigabitEthernet1/0/22 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030a",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/23",
+        "description": "GigabitEthernet1/0/23 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030b",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/24",
+        "description": "GigabitEthernet1/0/24 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030c",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/25",
+        "description": "GigabitEthernet1/0/25 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/26",
+        "description": "GigabitEthernet1/0/26 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/27",
+        "description": "GigabitEthernet1/0/27 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-030f",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/28",
+        "description": "GigabitEthernet1/0/28 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0310",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/29",
+        "description": "GigabitEthernet1/0/29 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0311",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/30",
+        "description": "GigabitEthernet1/0/30 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0312",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/31",
+        "description": "GigabitEthernet1/0/31 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0313",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/32",
+        "description": "GigabitEthernet1/0/32 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0314",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/33",
+        "description": "GigabitEthernet1/0/33 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0315",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/34",
+        "description": "GigabitEthernet1/0/34 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0316",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/35",
+        "description": "GigabitEthernet1/0/35 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0317",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/36",
+        "description": "GigabitEthernet1/0/36 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0318",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/37",
+        "description": "GigabitEthernet1/0/37 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0319",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/38",
+        "description": "GigabitEthernet1/0/38 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031a",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/39",
+        "description": "GigabitEthernet1/0/39 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031b",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/40",
+        "description": "GigabitEthernet1/0/40 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031c",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/41",
+        "description": "GigabitEthernet1/0/41 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/42",
+        "description": "GigabitEthernet1/0/42 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/43",
+        "description": "GigabitEthernet1/0/43 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-031f",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/44",
+        "description": "GigabitEthernet1/0/44 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0320",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/45",
+        "description": "GigabitEthernet1/0/45 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0321",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/46",
+        "description": "GigabitEthernet1/0/46 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0322",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/47",
+        "description": "GigabitEthernet1/0/47 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0323",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/48",
+        "description": "GigabitEthernet1/0/48 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0324",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/49",
+        "description": "GigabitEthernet1/0/49 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0325",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/50",
+        "description": "M-GigabitEthernet0/0/0 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-02cf",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "NULL0",
+        "description": "Register-Tunnel0 Interface",
+        "ip": "UP",
+        "mask": "",
+        "mac": "",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/51",
+        "description": "Ten-GigabitEthernet1/0/51 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0327",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/52",
+        "description": "Vlan-interface22 Interface",
+        "ip": "10.16.16.9",
+        "mask": "255.255.252.0",
+        "mac": "642f-c7e0-02eb",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      }
+    ],
+    "neighbors": [
+      {
+        "local_interface": "Ten-GigabitEthernet1/0/51",
+        "remote_device": "642f-c7e0-0e2b",
+        "remote_ip": "",
+        "remote_mac": "642f-c7e0-0e2b",
+        "remote_interface": "Ten-GigabitEthernet1/0/52",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "Ten-GigabitEthernet1/0/52",
+        "remote_device": "642f-c7e0-2483",
+        "remote_ip": "",
+        "remote_mac": "642f-c7e0-2483",
+        "remote_interface": "Ten-GigabitEthernet1/0/51",
+        "protocol": "LLDP"
+      }
+    ],
+    "mac_addresses": [
+      "642f-c7e0-0322",
+      "642f-c7e0-0324",
+      "642f-c7e0-02cf",
+      "642f-c7e0-02eb",
+      "642f-c7e0-02fc",
+      "642f-c7e0-0302",
+      "642f-c7e0-030e",
+      "642f-c7e0-0329",
+      "642f-c7e0-032e",
+      "642f-c7e0-02f6",
+      "642f-c7e0-02f7",
+      "642f-c7e0-02fa",
+      "642f-c7e0-0308",
+      "642f-c7e0-0320",
+      "642f-c7e0-0323",
+      "642f-c7e0-02fb",
+      "642f-c7e0-030c",
+      "642f-c7e0-030d",
+      "642f-c7e0-0310",
+      "642f-c7e0-0311",
+      "642f-c7e0-0313",
+      "642f-c7e0-031e",
+      "642f-c7e0-02fd",
+      "642f-c7e0-0306",
+      "642f-c7e0-0307",
+      "642f-c7e0-030a",
+      "642f-c7e0-030f",
+      "642f-c7e0-031d",
+      "642f-c7e0-02f9",
+      "642f-c7e0-0305",
+      "642f-c7e0-0318",
+      "642f-c7e0-031b",
+      "642f-c7e0-0325",
+      "642f-c7e0-0327",
+      "642f-c7e0-02f5",
+      "642f-c7e0-02f8",
+      "642f-c7e0-0301",
+      "642f-c7e0-0304",
+      "642f-c7e0-030b",
+      "642f-c7e0-0314",
+      "642f-c7e0-0316",
+      "642f-c7e0-031c",
+      "642f-c7e0-02fe",
+      "642f-c7e0-0300",
+      "642f-c7e0-0303",
+      "642f-c7e0-0312",
+      "642f-c7e0-0315",
+      "642f-c7e0-0317",
+      "642f-c7e0-0319",
+      "642f-c7e0-031a",
+      "642f-c7e0-02ff",
+      "642f-c7e0-0309",
+      "642f-c7e0-031f",
+      "642f-c7e0-0321"
+    ],
+    "last_scanned": "2026-04-26T05:08:06.8307539+08:00",
+    "scan_status": "success"
+  },
+  {
+    "id": "172.16.8.10",
+    "ip": "172.16.8.10",
+    "type": "h3c",
+    "hostname": "BJ-Access10",
+    "os_version": "H3C Comware Software, Version 7.1.070, Release 6126P20",
+    "uptime": "16 weeks,",
+    "interfaces": [
+      {
+        "name": "GigabitEthernet1/0/1",
+        "description": "GigabitEthernet1/0/1 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e4",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/2",
+        "description": "GigabitEthernet1/0/2 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e5",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/3",
+        "description": "GigabitEthernet1/0/3 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e6",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/4",
+        "description": "GigabitEthernet1/0/4 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e7",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/5",
+        "description": "GigabitEthernet1/0/5 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e8",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/6",
+        "description": "GigabitEthernet1/0/6 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38e9",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/7",
+        "description": "GigabitEthernet1/0/7 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38ea",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/8",
+        "description": "GigabitEthernet1/0/8 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38eb",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/9",
+        "description": "GigabitEthernet1/0/9 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38ec",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/10",
+        "description": "GigabitEthernet1/0/10 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38ed",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/11",
+        "description": "GigabitEthernet1/0/11 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38ee",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/12",
+        "description": "GigabitEthernet1/0/12 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38ef",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/13",
+        "description": "GigabitEthernet1/0/13 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f0",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/14",
+        "description": "GigabitEthernet1/0/14 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f1",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/15",
+        "description": "GigabitEthernet1/0/15 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/16",
+        "description": "GigabitEthernet1/0/16 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f3",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/17",
+        "description": "GigabitEthernet1/0/17 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f4",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/18",
+        "description": "GigabitEthernet1/0/18 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/19",
+        "description": "GigabitEthernet1/0/19 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/20",
+        "description": "InLoopBack0 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "743a-2047-38f7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "NULL0",
+        "description": "Vlan-interface12 Interface",
+        "ip": "172.16.8.10",
+        "mask": "255.255.255.0",
+        "mac": "743a-2047-38e0",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      }
+    ],
+    "neighbors": [
+      {
+        "local_interface": "GigabitEthernet1/0/1",
+        "remote_device": "9844-ce18-f2a0",
+        "remote_ip": "",
+        "remote_mac": "9844-ce18-f2a0",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/2",
+        "remote_device": "9400-b06f-6da0",
+        "remote_ip": "",
+        "remote_mac": "9400-b06f-6da0",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/3",
+        "remote_device": "cc05-77ce-db40",
+        "remote_ip": "",
+        "remote_mac": "cc05-77ce-db40",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/4",
+        "remote_device": "9844-ce19-09a0",
+        "remote_ip": "",
+        "remote_mac": "9844-ce19-09a0",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/5",
+        "remote_device": "9844-ce19-0c80",
+        "remote_ip": "",
+        "remote_mac": "9844-ce19-0c80",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/7",
+        "remote_device": "9844-ce18-b480",
+        "remote_ip": "",
+        "remote_mac": "9844-ce18-b480",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/9",
+        "remote_device": "44a1-913f-1be0",
+        "remote_ip": "",
+        "remote_mac": "44a1-913f-1be0",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/10",
+        "remote_device": "9400-b06f-7660",
+        "remote_ip": "",
+        "remote_mac": "9400-b06f-7660",
+        "remote_interface": "GigabitEthernet0/0/0",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/16",
+        "remote_device": "642f-c7e0-0333",
+        "remote_ip": "",
+        "remote_mac": "642f-c7e0-0333",
+        "remote_interface": "GigabitEthernet1/0/47",
+        "protocol": "LLDP"
+      }
+    ],
+    "mac_addresses": [
+      "743a-2047-38e8",
+      "743a-2047-38ec",
+      "743a-2047-38ee",
+      "743a-2047-38f2",
+      "743a-2047-38f4",
+      "743a-2047-38f5",
+      "743a-2047-38f6",
+      "743a-2047-38f7",
+      "743a-2047-38e7",
+      "743a-2047-38ea",
+      "743a-2047-38f0",
+      "743a-2047-38f3",
+      "743a-2047-38e0",
+      "743a-2047-38e5",
+      "743a-2047-38e6",
+      "743a-2047-38eb",
+      "743a-2047-38e4",
+      "743a-2047-38e9",
+      "743a-2047-38ed",
+      "743a-2047-38ef",
+      "743a-2047-38f1"
+    ],
+    "last_scanned": "2026-04-26T05:09:02.6176491+08:00",
+    "scan_status": "success"
+  },
+  {
+    "id": "172.16.8.1",
+    "ip": "172.16.8.1",
+    "type": "h3c",
+    "hostname": "BJ-FW01-New",
+    "os_version": "H3C Comware Software, Version 7.1.064, Release 9323P25",
+    "uptime": "16 weeks,",
+    "interfaces": [
+      {
+        "name": "GigabitEthernet1/0/0",
+        "description": "GigabitEthernet1/0/0 Interface",
+        "ip": "192.168.0.1",
+        "mask": "255.255.255.0",
+        "mac": "782c-2958-e5b2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/1",
+        "description": "GigabitEthernet1/0/1 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b3",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/2",
+        "description": "GigabitEthernet1/0/2 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b4",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/3",
+        "description": "GigabitEthernet1/0/3 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/4",
+        "description": "GigabitEthernet1/0/4 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/5",
+        "description": "GigabitEthernet1/0/5 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/6",
+        "description": "To-Internet",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5b8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/7",
+        "description": "Google-Line",
+        "ip": "192.168.121.1",
+        "mask": "255.255.255.0",
+        "mac": "782c-2958-e5b9",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/8",
+        "description": "GigabitEthernet1/0/8 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5ba",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/9",
+        "description": "X1 Remote Desktop",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5bb",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/10",
+        "description": "To SW NAS01",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5bc",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/11",
+        "description": "GigabitEthernet1/0/11 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5bd",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/12",
+        "description": "GigabitEthernet1/0/12 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5be",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/13",
+        "description": "GigabitEthernet1/0/13 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5bf",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/14",
+        "description": "GigabitEthernet1/0/14 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c0",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/15",
+        "description": "To BJ Core Switch",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c1",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/16",
+        "description": "GigabitEthernet1/0/16 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c2",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/17",
+        "description": "GigabitEthernet1/0/17 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c3",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/18",
+        "description": "GigabitEthernet1/0/18 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c4",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/19",
+        "description": "GigabitEthernet1/0/19 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c5",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/20",
+        "description": "GigabitEthernet1/0/20 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c6",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/21",
+        "description": "GigabitEthernet1/0/21 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c7",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/22",
+        "description": "GigabitEthernet1/0/22 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "782c-2958-e5c8",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/23",
+        "description": "InLoopBack0 Interface",
+        "ip": "123.127.41.253",
+        "mask": "255.255.255.240",
+        "mac": "782c-2958-e5c9",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "NULL0",
+        "description": "Vlan-interface99 Interface",
+        "ip": "172.16.99.1",
+        "mask": "255.255.255.0",
+        "mac": "782c-2958-e5ae",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      }
+    ],
+    "neighbors": [
+      {
+        "local_interface": "GigabitEthernet1/0/15",
+        "remote_device": "642f-c7e0-0333",
+        "remote_ip": "",
+        "remote_mac": "642f-c7e0-0333",
+        "remote_interface": "GigabitEthernet1/0/48",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/23",
+        "remote_device": "4c09-b4fe-b770",
+        "remote_ip": "",
+        "remote_mac": "4c09-b4fe-b770",
+        "remote_interface": "gei-0/2/0",
+        "protocol": "LLDP"
+      }
+    ],
+    "mac_addresses": [
+      "782c-2958-e5b5",
+      "782c-2958-e5b7",
+      "782c-2958-e5bb",
+      "782c-2958-e5c5",
+      "782c-2958-e5c6",
+      "782c-2958-e5c9",
+      "782c-2958-e5b3",
+      "782c-2958-e5b4",
+      "782c-2958-e5b8",
+      "782c-2958-e5bc",
+      "782c-2958-e5bd",
+      "782c-2958-e5bf",
+      "782c-2958-e5c7",
+      "782c-2958-e5c8",
+      "782c-2958-e5b9",
+      "782c-2958-e5ba",
+      "782c-2958-e5be",
+      "782c-2958-e5c1",
+      "782c-2958-e5c2",
+      "782c-2958-e5c3",
+      "782c-2958-e5c4",
+      "782c-2958-e5ae",
+      "782c-2958-e5b2",
+      "782c-2958-e5b6",
+      "782c-2958-e5c0"
+    ],
+    "last_scanned": "2026-04-26T05:03:43.7955184+08:00",
+    "scan_status": "success"
+  },
+  {
+    "id": "172.16.8.6",
+    "ip": "172.16.8.6",
+    "type": "h3c",
+    "hostname": "BJ-Access06",
+    "os_version": "H3C Comware Software, Version 7.1.070, Release 6312P01",
+    "uptime": "16 weeks,",
+    "interfaces": [
+      {
+        "name": "FortyGigE1/0/53",
+        "description": "FortyGigE1/0/53 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0391",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "FortyGigE1/0/54",
+        "description": "FortyGigE1/0/54 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0396",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/1",
+        "description": "GigabitEthernet1/0/1 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-035d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/2",
+        "description": "GigabitEthernet1/0/2 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-035e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/3",
+        "description": "GigabitEthernet1/0/3 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-035f",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/4",
+        "description": "GigabitEthernet1/0/4 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0360",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/5",
+        "description": "GigabitEthernet1/0/5 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0361",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/6",
+        "description": "GigabitEthernet1/0/6 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0362",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/7",
+        "description": "GigabitEthernet1/0/7 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0363",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/8",
+        "description": "GigabitEthernet1/0/8 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0364",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/9",
+        "description": "GigabitEthernet1/0/9 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0365",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/10",
+        "description": "GigabitEthernet1/0/10 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0366",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/11",
+        "description": "GigabitEthernet1/0/11 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0367",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/12",
+        "description": "GigabitEthernet1/0/12 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0368",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/13",
+        "description": "GigabitEthernet1/0/13 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0369",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/14",
+        "description": "GigabitEthernet1/0/14 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036a",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/15",
+        "description": "GigabitEthernet1/0/15 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036b",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/16",
+        "description": "GigabitEthernet1/0/16 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036c",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/17",
+        "description": "GigabitEthernet1/0/17 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/18",
+        "description": "GigabitEthernet1/0/18 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/19",
+        "description": "GigabitEthernet1/0/19 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-036f",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/20",
+        "description": "GigabitEthernet1/0/20 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0370",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/21",
+        "description": "GigabitEthernet1/0/21 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0371",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/22",
+        "description": "GigabitEthernet1/0/22 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0372",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/23",
+        "description": "GigabitEthernet1/0/23 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0373",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/24",
+        "description": "GigabitEthernet1/0/24 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0374",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/25",
+        "description": "GigabitEthernet1/0/25 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0375",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/26",
+        "description": "GigabitEthernet1/0/26 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0376",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/27",
+        "description": "Video MGT",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0377",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/28",
+        "description": "GigabitEthernet1/0/28 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0378",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/29",
+        "description": "GigabitEthernet1/0/29 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0379",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/30",
+        "description": "GigabitEthernet1/0/30 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037a",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/31",
+        "description": "GigabitEthernet1/0/31 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037b",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/32",
+        "description": "GigabitEthernet1/0/32 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037c",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/33",
+        "description": "GigabitEthernet1/0/33 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/34",
+        "description": "GigabitEthernet1/0/34 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037e",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/35",
+        "description": "GigabitEthernet1/0/35 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-037f",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/36",
+        "description": "GigabitEthernet1/0/36 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0380",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/37",
+        "description": "GigabitEthernet1/0/37 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0381",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/38",
+        "description": "GigabitEthernet1/0/38 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0382",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/39",
+        "description": "GigabitEthernet1/0/39 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0383",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/40",
+        "description": "GigabitEthernet1/0/40 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0384",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/41",
+        "description": "GigabitEthernet1/0/41 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0385",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/42",
+        "description": "GigabitEthernet1/0/42 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0386",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/43",
+        "description": "GigabitEthernet1/0/43 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0387",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/44",
+        "description": "GigabitEthernet1/0/44 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0388",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/45",
+        "description": "GigabitEthernet1/0/45 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0389",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/46",
+        "description": "GigabitEthernet1/0/46 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-038a",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/47",
+        "description": "GigabitEthernet1/0/47 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-038b",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/48",
+        "description": "GigabitEthernet1/0/48 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-038c",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/49",
+        "description": "GigabitEthernet1/0/49 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-038d",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "GigabitEthernet1/0/50",
+        "description": "M-GigabitEthernet0/0/0 Interface",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-0337",
+        "status": "down",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "NULL0",
+        "description": "Register-Tunnel0 Interface",
+        "ip": "UP",
+        "mask": "",
+        "mac": "",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/51",
+        "description": "BJESXI91",
+        "ip": "",
+        "mask": "",
+        "mac": "642f-c7e0-038f",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      },
+      {
+        "name": "Ten-GigabitEthernet1/0/52",
+        "description": "Vlan-interface16 Interface",
+        "ip": "10.16.16.6",
+        "mask": "255.255.252.0",
+        "mac": "642f-c7e0-034d",
+        "status": "up",
+        "speed": "",
+        "duplex": "",
+        "mtu": 0,
+        "in_bytes": 0,
+        "out_bytes": 0,
+        "in_packets": 0,
+        "out_packets": 0
+      }
+    ],
+    "neighbors": [
+      {
+        "local_interface": "GigabitEthernet1/0/46",
+        "remote_device": "c8a7-768a-694b",
+        "remote_ip": "",
+        "remote_mac": "c8a7-768a-694b",
+        "remote_interface": "GigabitEthernet0/0/1",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/47",
+        "remote_device": "743a-2047-38d6",
+        "remote_ip": "",
+        "remote_mac": "743a-2047-38d6",
+        "remote_interface": "GigabitEthernet1/0/16",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "GigabitEthernet1/0/48",
+        "remote_device": "782c-2958-e5ae",
+        "remote_ip": "",
+        "remote_mac": "782c-2958-e5ae",
+        "remote_interface": "GigabitEthernet1/0/15",
+        "protocol": "LLDP"
+      },
+      {
+        "local_interface": "Ten-GigabitEthernet1/0/51",
+        "remote_device": "642f-c7df-f83b",
+        "remote_ip": "",
+        "remote_mac": "642f-c7df-f83b",
+        "remote_interface": "Ten-GigabitEthernet1/0/52",
+        "protocol": "LLDP"
+      }
+    ],
+    "mac_addresses": [
+      "642f-c7e0-0378",
+      "642f-c7e0-037b",
+      "642f-c7e0-0383",
+      "642f-c7e0-038b",
+      "642f-c7e0-0391",
+      "642f-c7e0-0362",
+      "642f-c7e0-0368",
+      "642f-c7e0-0386",
+      "642f-c7e0-0337",
+      "642f-c7e0-036f",
+      "642f-c7e0-0370",
+      "642f-c7e0-0375",
+      "642f-c7e0-037a",
+      "642f-c7e0-0380",
+      "642f-c7e0-0384",
+      "642f-c7e0-0387",
+      "642f-c7e0-035f",
+      "642f-c7e0-0360",
+      "642f-c7e0-0363",
+      "642f-c7e0-0365",
+      "642f-c7e0-036a",
+      "642f-c7e0-036b",
+      "642f-c7e0-036c",
+      "642f-c7e0-036e",
+      "642f-c7e0-035d",
+      "642f-c7e0-0372",
+      "642f-c7e0-0376",
+      "642f-c7e0-0377",
+      "642f-c7e0-0379",
+      "642f-c7e0-037f",
+      "642f-c7e0-0388",
+      "642f-c7e0-0389",
+      "642f-c7e0-0396",
+      "642f-c7e0-0361",
+      "642f-c7e0-0369",
+      "642f-c7e0-038c",
+      "642f-c7e0-038f",
+      "642f-c7e0-0373",
+      "642f-c7e0-0374",
+      "642f-c7e0-037c",
+      "642f-c7e0-038a",
+      "642f-c7e0-038d",
+      "642f-c7e0-034d",
+      "642f-c7e0-0367",
+      "642f-c7e0-0371",
+      "642f-c7e0-037d",
+      "642f-c7e0-037e",
+      "642f-c7e0-0381",
+      "642f-c7e0-0382",
+      "642f-c7e0-0385",
+      "642f-c7e0-035e",
+      "642f-c7e0-0364",
+      "642f-c7e0-0366",
+      "642f-c7e0-036d"
+    ],
+    "last_scanned": "2026-04-26T05:04:41.0462642+08:00",
+    "scan_status": "success"
+  }
+]

+ 82 - 97
internal/device/h3c.go

@@ -16,23 +16,24 @@ type H3CParser struct {
 // GetCommands 获取H3C设备命令列表
 func (p *H3CParser) GetCommands() []string {
 	return []string{
-		"screen-length disable",  // 禁用分页(H3C/华为设备必需)
+		"screen-length disable", // 禁用分页(H3C/华为设备必需)
 		"display version",
 		"display interface",
-		"display interface brief",  // 接口简要信息(包含VLAN和物理接口状态)
-		"display lldp neighbor-information verbose",  // LLDP邻居详细信息(包含System name和Management address)
+		"display interface brief",           // 接口简要信息(包含VLAN和物理接口状态)
+		"display lldp neighbor-information", // 使用非verbose格式(v1.0.0验证可行)
+		"display arp",                       // ARP表用于解析邻居IP
 	}
 }
 
 // Parse 解析H3C设备输出
 func (p *H3CParser) Parse(device *models.Device, outputs []string) error {
-	if len(outputs) < 5 {
+	if len(outputs) < 6 {
 		return fmt.Errorf("insufficient command outputs")
 	}
 
 	// outputs[0] 是 screen-length disable 的输出(通常为空)
-	p.parseVersion(device, outputs[1])  // outputs[1] 是 display version
-	
+	p.parseVersion(device, outputs[1]) // outputs[1] 是 display version
+
 	// outputs[2] 是 display interface
 	fmt.Printf("[H3C DEBUG] display interface output length: %d\n", len(outputs[2]))
 	if len(outputs[2]) > 0 {
@@ -45,17 +46,17 @@ func (p *H3CParser) Parse(device *models.Device, outputs []string) error {
 	} else {
 		fmt.Printf("[H3C DEBUG] display interface output is EMPTY!\n")
 	}
-	
+
 	if outputs[2] == "" {
 		fmt.Printf("Warning: 'display interface' output is empty for device %s\n", device.IP)
 	} else {
 		// outputs[3] 是 display interface brief
 		device.Interfaces = p.parseInterfaces(outputs[2], outputs[3])
 		if len(device.Interfaces) == 0 {
-			fmt.Printf("Warning: parsed 0 interfaces for device %s (output length: %d)\n", 
+			fmt.Printf("Warning: parsed 0 interfaces for device %s (output length: %d)\n",
 				device.IP, len(outputs[2]))
 		}
-		
+
 		// 收集所有接口的MAC地址(用于邻居匹配)
 		macSet := make(map[string]bool)
 		for _, iface := range device.Interfaces {
@@ -70,12 +71,24 @@ func (p *H3CParser) Parse(device *models.Device, outputs []string) error {
 		}
 		fmt.Printf("  Collected %d unique MAC addresses for device %s\n", len(macSet), device.IP)
 	}
-	
+
 	// outputs[4] 是 display lldp neighbor-information
-	
-	// 解析LLDP邻居
-	device.Neighbors = p.parseNeighbors(outputs[4], nil)
-	
+	// outputs[5] 是 display arp
+
+	// 解析ARP表
+	fmt.Printf("[H3C ARP DEBUG] Raw ARP output length: %d bytes\n", len(outputs[5]))
+	if len(outputs[5]) > 0 && len(outputs[5]) <= 1000 {
+		fmt.Printf("[H3C ARP DEBUG] Raw ARP output:\n%s\n", outputs[5])
+	} else if len(outputs[5]) > 1000 {
+		fmt.Printf("[H3C ARP DEBUG] Raw ARP output (first 1000 bytes):\n%s\n", outputs[5][:1000])
+	}
+
+	arpTable := p.parseARPTable(outputs[5])
+	fmt.Printf("[H3C ARP DEBUG] Parsed ARP table: %d entries\n", len(arpTable))
+
+	// 解析LLDP邻居(传入ARP表)
+	device.Neighbors = p.parseNeighbors(outputs[4], arpTable)
+
 	fmt.Printf("Device %s: %d interfaces, %d neighbors\n",
 		device.IP, len(device.Interfaces), len(device.Neighbors))
 
@@ -197,12 +210,12 @@ func (p *H3CParser) parseInterfaces(interfaceOutput, briefOutput string) []model
 func cidrToMask(cidr string) string {
 	var mask int
 	fmt.Sscanf(cidr, "%d", &mask)
-	
+
 	s := uint32(0)
 	for i := 0; i < mask; i++ {
 		s |= (1 << (31 - uint(i)))
 	}
-	
+
 	return fmt.Sprintf("%d.%d.%d.%d",
 		(s>>24)&0xFF,
 		(s>>16)&0xFF,
@@ -217,10 +230,10 @@ func (p *H3CParser) parseARPTable(output string) map[string]string {
 
 	for _, line := range lines {
 		// 跳过空行和标题行
-		if strings.TrimSpace(line) == "" || 
-		   strings.Contains(line, "Type:") ||
-		   strings.Contains(line, "------") ||
-		   strings.Contains(line, "IP address") {
+		if strings.TrimSpace(line) == "" ||
+			strings.Contains(line, "Type:") ||
+			strings.Contains(line, "------") ||
+			strings.Contains(line, "IP address") {
 			continue
 		}
 
@@ -230,10 +243,14 @@ func (p *H3CParser) parseARPTable(output string) map[string]string {
 		if len(fields) >= 2 {
 			ip := fields[0]
 			mac := strings.ToLower(fields[1])
-			
+
+			// 标准化MAC地址(统一为aabb-ccdd-eeff格式)
+			mac = normalizeMACFormat(mac)
+
 			// 验证是有效的IP和MAC
 			if isValidIP(ip) && isValidMAC(mac) {
 				macToIP[mac] = ip
+				fmt.Printf("[H3C ARP DEBUG] Added MAC->IP: %s -> %s\n", mac, ip)
 			}
 		}
 	}
@@ -241,6 +258,24 @@ func (p *H3CParser) parseARPTable(output string) map[string]string {
 	return macToIP
 }
 
+// normalizeMACFormat 标准化MAC地址格式(统一为aabb-ccdd-eeff)
+func normalizeMACFormat(mac string) string {
+	// 去除所有分隔符
+	clean := ""
+	for _, c := range mac {
+		if c != '-' && c != ':' && c != '.' {
+			clean += string(c)
+		}
+	}
+
+	// 重新格式化为aabb-ccdd-eeff
+	if len(clean) == 12 {
+		return fmt.Sprintf("%s-%s-%s", clean[0:4], clean[4:8], clean[8:12])
+	}
+
+	return mac
+}
+
 func (p *H3CParser) parseInterfaceBrief(output string) map[string]models.Interface {
 	interfaces := make(map[string]models.Interface)
 	lines := strings.Split(output, "\n")
@@ -276,7 +311,7 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) []
 			if currentNeighbor != nil && currentNeighbor.RemoteInterface != "" {
 				neighbors = append(neighbors, *currentNeighbor)
 			}
-			
+
 			matches := portRegex.FindStringSubmatch(line)
 			localInterface = matches[1]
 			currentNeighbor = &models.Neighbor{
@@ -287,24 +322,7 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) []
 		}
 
 		if currentNeighbor != nil {
-			// 提取 ChassisID (MAC地址)
-			// Verbose格式: Chassis ID: 642f-c7e0-0333
-			if strings.Contains(line, "Chassis ID:") && !strings.Contains(line, "ChassisID/subtype") {
-				parts := strings.SplitN(line, ":", 2)
-				if len(parts) == 2 {
-					mac := strings.TrimSpace(strings.ToLower(parts[1]))
-					if isValidMAC(mac) {
-						currentNeighbor.RemoteMAC = mac
-						// 如果还没有RemoteDevice,先使用MAC作为占位符(后续可能被System name覆盖)
-						if currentNeighbor.RemoteDevice == "" {
-							currentNeighbor.RemoteDevice = mac
-						}
-						fmt.Printf("  [LLDP] Parsed neighbor MAC (verbose): %s\n", mac)
-					}
-				}
-			}
-			
-			// 非verbose格式: ChassisID/subtype: a4bb-6de2-62cd/MAC address
+			// 提取 ChassisID (MAC地址) - 非verbose格式
 			if strings.Contains(line, "ChassisID/subtype") {
 				parts := strings.SplitN(line, ":", 2)
 				if len(parts) == 2 {
@@ -312,61 +330,33 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) []
 					// 格式: a4bb-6de2-62cd/MAC address
 					if macParts := strings.Split(value, "/"); len(macParts) > 0 {
 						mac := strings.TrimSpace(strings.ToLower(macParts[0]))
+						// 标准化MAC地址格式
+						mac = normalizeMACFormat(mac)
+						// 保存MAC地址
 						currentNeighbor.RemoteMAC = mac
-						if currentNeighbor.RemoteDevice == "" {
-							currentNeighbor.RemoteDevice = mac
-						}
-						fmt.Printf("  [LLDP] Parsed neighbor MAC: %s\n", mac)
-					}
-				}
-			}
-
-			// 提取 System name (verbose格式)
-			if strings.Contains(line, "System name:") {
-				parts := strings.SplitN(line, ":", 2)
-				if len(parts) == 2 {
-					systemName := strings.TrimSpace(parts[1])
-					if systemName != "" {
-						// System name 是最可靠的匹配方式,覆盖之前的MAC地址占位符
-						currentNeighbor.RemoteDevice = systemName
-						fmt.Printf("  [LLDP] Parsed neighbor System name: %s\n", systemName)
-					}
-				}
-			}
-
-			// 提取 Management address (verbose格式)
-			if strings.Contains(line, "Management address:") {
-				parts := strings.SplitN(line, ":", 2)
-				if len(parts) == 2 {
-					mgmtAddr := strings.TrimSpace(parts[1])
-					if isValidIP(mgmtAddr) {
-						// 如果还没有RemoteIP,使用Management address
-						if currentNeighbor.RemoteIP == "" {
-							currentNeighbor.RemoteIP = mgmtAddr
-							fmt.Printf("  [LLDP] Parsed neighbor Management address: %s\n", mgmtAddr)
+						fmt.Printf("  Parsed neighbor MAC: %s (from line: %s)\n", mac, line)
+
+						// 使用MAC地址作为设备标识
+						currentNeighbor.RemoteDevice = mac
+
+						// 通过ARP表查找IP地址
+						if arpTable != nil {
+							if ip, found := arpTable[mac]; found {
+								currentNeighbor.RemoteIP = ip
+								fmt.Printf("  ✓ Found IP for MAC %s: %s\n", mac, ip)
+							} else {
+								fmt.Printf("  ✗ No IP found for MAC %s in ARP table\n", mac)
+							}
 						}
-					}
-				}
-			}
-
-			// 提取 PortID (远程接口)
-			// Verbose格式: Port ID: GigabitEthernet1/0/48 或 Port ID: a4bb-6de2-62cd (MAC地址)
-			if strings.Contains(line, "Port ID:") && !strings.Contains(line, "PortID/subtype") && !strings.Contains(line, "Port ID type") {
-				parts := strings.SplitN(line, ":", 2)
-				if len(parts) == 2 {
-					portID := strings.TrimSpace(parts[1])
-					// 检查Port ID是否是MAC地址(格式: a4bb-6de2-62cd)
-					if isValidMAC(portID) {
-						// Port ID是MAC地址,不赋值给RemoteInterface
-						fmt.Printf("  [LLDP] Port ID is MAC address (not interface): %s\n", portID)
 					} else {
-						// Port ID是接口名
-						currentNeighbor.RemoteInterface = portID
+						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)
 				}
 			}
-			
-			// 非verbose格式: PortID/subtype: GigabitEthernet0/0/1/Interface name
+
+			// 提取 PortID (远程接口) - 非verbose格式
 			if strings.Contains(line, "PortID/subtype") {
 				parts := strings.SplitN(line, ":", 2)
 				if len(parts) == 2 {
@@ -375,20 +365,15 @@ func (p *H3CParser) parseNeighbors(output string, arpTable map[string]string) []
 					if portParts := strings.Split(value, "/"); len(portParts) >= 3 {
 						// 取前3部分作为接口名: GigabitEthernet0/0/1
 						currentNeighbor.RemoteInterface = strings.Join(portParts[:3], "/")
+						fmt.Printf("  Parsed neighbor interface: %s\n", currentNeighbor.RemoteInterface)
 					}
 				}
 			}
 		}
 	}
 
-	// 添加最后一个邻居(修改:只要有RemoteDevice或RemoteInterface就添加)
-	if currentNeighbor != nil && (currentNeighbor.RemoteDevice != "" || currentNeighbor.RemoteInterface != "") {
-		// 如果Port ID是MAC地址而不是接口名,将MAC赋值给RemoteInterface(如果为空)
-		if currentNeighbor.RemoteInterface == "" && currentNeighbor.RemoteMAC != "" {
-			// 检查Port ID是否是MAC地址(在解析过程中可能已经将MAC作为Port ID)
-			// 这种情况发生在Port ID type为MAC address时
-			fmt.Printf("  [LLDP] Neighbor has no interface name, using MAC as identifier: %s\n", currentNeighbor.RemoteMAC)
-		}
+	// 添加最后一个邻居
+	if currentNeighbor != nil && currentNeighbor.RemoteInterface != "" {
 		neighbors = append(neighbors, *currentNeighbor)
 	}
 

+ 145 - 16
internal/topology/builder.go

@@ -2,8 +2,8 @@ package topology
 
 import (
 	"fmt"
-	"strings"
 	"network-topology-discovery/pkg/models"
+	"strings"
 )
 
 // Builder 拓扑构建器
@@ -41,7 +41,7 @@ func (b *Builder) Build() models.TopologyGraph {
 		if hostname == "" {
 			hostname = device.IP
 		}
-		
+
 		node := models.TopologyNode{
 			ID:       device.IP,
 			IP:       device.IP,
@@ -53,9 +53,16 @@ func (b *Builder) Build() models.TopologyGraph {
 		graph.Nodes = append(graph.Nodes, node)
 	}
 
+	fmt.Printf("\n========== TOPOLOGY BUILD ===========\n")
+	fmt.Printf("Total devices: %d\n", len(b.devices))
+	fmt.Printf("Total nodes created: %d\n", len(graph.Nodes))
+	for _, node := range graph.Nodes {
+		fmt.Printf("  Node: %s (%s) - Type: %s\n", node.ID, node.Hostname, node.Type)
+	}
+
 	// 构建边(基于邻居信息)
 	edgeMap := make(map[string]bool) // 用于去重
-	
+
 	// 打印所有设备的MAC地址,用于调试
 	fmt.Println("\n========== MAC Address Database ==========")
 	for _, d := range b.devices {
@@ -72,21 +79,24 @@ func (b *Builder) Build() models.TopologyGraph {
 		}
 	}
 	fmt.Println("==========================================\n")
-	
+
 	for _, device := range b.devices {
 		fmt.Printf("Building edges for device %s: %d neighbors, %d MAC addresses\n",
 			device.IP, len(device.Neighbors), len(device.MACAddresses))
-		
+
 		for _, neighbor := range device.Neighbors {
 			fmt.Printf("  Processing neighbor on %s: RemoteMAC=%s, RemoteDevice=%s, RemoteIP=%s\n",
 				neighbor.LocalInterface, neighbor.RemoteMAC, neighbor.RemoteDevice, neighbor.RemoteIP)
-			
-			// 尝试匹配邻居设备
+
+			// 尝试匹配邻居设备 - 多重策略
 			targetIP := neighbor.RemoteIP
 			matchMethod := "IP"
-			
-			// 如果没有IP,尝试通过设备名匹配
-			if targetIP == "" && neighbor.RemoteDevice != "" {
+
+			// 策略1: 如果已有IP,直接使用
+			if targetIP != "" {
+				fmt.Printf("    ✓ Using direct IP: %s\n", targetIP)
+			} else if neighbor.RemoteDevice != "" {
+				// 策略2: 尝试通过主机名匹配
 				fmt.Printf("    Trying hostname match: %s\n", neighbor.RemoteDevice)
 				for _, d := range b.devices {
 					if d.Hostname == neighbor.RemoteDevice {
@@ -97,8 +107,8 @@ func (b *Builder) Build() models.TopologyGraph {
 					}
 				}
 			}
-			
-			// 如果还是没有,尝试通过MAC地址匹配(新增)
+
+			// 策略3: 通过MAC地址匹配
 			if targetIP == "" && neighbor.RemoteMAC != "" {
 				fmt.Printf("    Trying MAC match: %s\n", neighbor.RemoteMAC)
 				for _, d := range b.devices {
@@ -106,11 +116,11 @@ func (b *Builder) Build() models.TopologyGraph {
 						// 标准化MAC地址进行比较(去除分隔符,转小写)
 						normalizedNeighborMAC := normalizeMAC(neighbor.RemoteMAC)
 						normalizedDeviceMAC := normalizeMAC(mac)
-						
+
 						if normalizedNeighborMAC == normalizedDeviceMAC {
 							targetIP = d.IP
 							matchMethod = "MAC"
-							fmt.Printf("    ✓ Matched by MAC: %s (device) == %s (neighbor) -> %s\n", 
+							fmt.Printf("    ✓ Matched by MAC: %s (device) == %s (neighbor) -> %s\n",
 								mac, neighbor.RemoteMAC, d.IP)
 							break
 						}
@@ -121,11 +131,111 @@ func (b *Builder) Build() models.TopologyGraph {
 				}
 			}
 
+			// 策略4: 通过本地接口IP网段匹配(新增)
+			if targetIP == "" {
+				// 查找本地接口的IP地址
+				localInterfaceIP := ""
+				for _, iface := range device.Interfaces {
+					if iface.Name == neighbor.LocalInterface && iface.IP != "" {
+						localInterfaceIP = iface.IP
+						break
+					}
+				}
+
+				if localInterfaceIP != "" {
+					fmt.Printf("    Trying subnet match: local interface %s has IP %s\n",
+						neighbor.LocalInterface, localInterfaceIP)
+
+					// 计算本地接口的网段
+					localSubnet := getSubnet(localInterfaceIP)
+
+					// 查找其他设备中是否有接口在同一网段
+					for _, d := range b.devices {
+						if d.IP == device.IP {
+							continue // 跳过自己
+						}
+
+						// 检查设备的管理IP是否在同一网段
+						if getSubnet(d.IP) == localSubnet {
+							targetIP = d.IP
+							matchMethod = "subnet(management IP)"
+							fmt.Printf("    ✓ Matched by subnet: %s in %s\n", d.IP, localSubnet)
+							break
+						}
+
+						// 检查设备的所有接口是否在同一网段
+						for _, iface := range d.Interfaces {
+							if iface.IP != "" && getSubnet(iface.IP) == localSubnet {
+								targetIP = d.IP
+								matchMethod = fmt.Sprintf("subnet(interface %s)", iface.Name)
+								fmt.Printf("    ✓ Matched by subnet: %s (%s) in %s\n",
+									d.IP, iface.Name, localSubnet)
+								break
+							}
+						}
+						if targetIP != "" {
+							break
+						}
+					}
+				} else {
+					// 策略4b: 本地接口没有IP,尝试使用设备管理IP进行子网匹配(新增)
+					// 注意:只有当该网段只有2台设备时才使用此策略(点对点连接)
+					fmt.Printf("    Trying subnet match with management IP: %s\n", device.IP)
+					localSubnet := getSubnet(device.IP)
+
+					// 统计在该网段的设备数量
+					var devicesInSubnet []string
+					for _, d := range b.devices {
+						if d.IP != device.IP && getSubnet(d.IP) == localSubnet {
+							devicesInSubnet = append(devicesInSubnet, d.IP)
+						}
+					}
+
+					// 只有当网段中恰好有1台其他设备时才匹配(点对点)
+					if len(devicesInSubnet) == 1 {
+						targetIP = devicesInSubnet[0]
+						matchMethod = "subnet(management IP both sides)"
+						fmt.Printf("    ✓ Matched by management subnet: %s in %s (only device in subnet)\n", targetIP, localSubnet)
+					} else if len(devicesInSubnet) > 1 {
+						fmt.Printf("    ✗ Skipping subnet match: %d devices in subnet %s (ambiguous)\n", len(devicesInSubnet)+1, localSubnet)
+					}
+				}
+			}
+
+			// 策略5: 通过接口描述匹配(新增)
+			if targetIP == "" {
+				// 查找本地接口的描述,看是否包含其他设备的IP或主机名
+				for _, iface := range device.Interfaces {
+					if iface.Name == neighbor.LocalInterface && iface.Description != "" {
+						desc := strings.ToLower(iface.Description)
+						fmt.Printf("    Trying description match: %s\n", iface.Description)
+
+						for _, d := range b.devices {
+							if d.IP == device.IP {
+								continue
+							}
+
+							// 检查描述中是否包含目标设备的IP或主机名
+							if strings.Contains(desc, strings.ToLower(d.IP)) ||
+								(d.Hostname != "" && strings.Contains(desc, strings.ToLower(d.Hostname))) {
+								targetIP = d.IP
+								matchMethod = "description"
+								fmt.Printf("    ✓ Matched by description: %s\n", iface.Description)
+								break
+							}
+						}
+					}
+					if targetIP != "" {
+						break
+					}
+				}
+			}
+
 			if targetIP == "" {
-				fmt.Printf("    ✗ Could not match neighbor on %s\n", neighbor.LocalInterface)
+				fmt.Printf("    ✗ Could not match neighbor on %s (MAC: %s)\n", neighbor.LocalInterface, neighbor.RemoteMAC)
 				continue
 			}
-			
+
 			fmt.Printf("  ✓ Creating edge: %s (%s) -> %s via %s, matched by %s\n",
 				device.IP, neighbor.LocalInterface, targetIP, neighbor.RemoteInterface, matchMethod)
 
@@ -152,6 +262,15 @@ func (b *Builder) Build() models.TopologyGraph {
 		}
 	}
 
+	fmt.Printf("\nTotal edges created: %d\n", len(graph.Edges))
+	for _, edge := range graph.Edges {
+		fmt.Printf("  Edge: %s (%s) -> %s (%s) [%s]\n",
+			edge.Source, edge.SourceInterface,
+			edge.Target, edge.TargetInterface,
+			edge.Protocol)
+	}
+	fmt.Println("========================================\n")
+
 	return graph
 }
 
@@ -168,6 +287,16 @@ func normalizeMAC(mac string) string {
 	return strings.ToLower(result)
 }
 
+// getSubnet 获取IP地址的C类网段(简化版,适用于/24网络)
+func getSubnet(ip string) string {
+	parts := strings.Split(ip, ".")
+	if len(parts) == 4 {
+		// 返回前3段作为网段,例如: 172.16.8.0/24 -> "172.16.8"
+		return fmt.Sprintf("%s.%s.%s", parts[0], parts[1], parts[2])
+	}
+	return ip
+}
+
 // getDeviceIcon 获取设备图标
 func getDeviceIcon(deviceType models.DeviceType) string {
 	switch deviceType {