通过对比v1.0.0分支的代码,发现了成功获取邻居信息的关键因素:
命令列表简化
// v1.0.0版本 - 成功的配置
"display lldp neighbor-information", // 非verbose格式
而不是:
// 失败的配置
"display lldp neighbor-information verbose", // verbose格式导致解析复杂
"display arp", // ARP命令增加复杂性
parseNeighbors函数简化
ChassisID/subtype 和 PortID/subtype 格式SSH命令输出处理
改回非verboseLLDP命令
"display lldp neighbor-information"简化parseNeighbors函数
ChassisID/subtype 和 PortID/subtypeSSH输出处理优化
stdoutBuf.Reset())调试信息增强
| 项目 | v1.0.0版本 | 之前失败版本 | 现在修复版本 |
|---|---|---|---|
| LLDP命令 | 非verbose | verbose | 非verbose ✅ |
| 命令数量 | 5个 | 6个(含ARP) | 5个 ✅ |
| parseNeighbors | 简单逻辑 | 复杂逻辑 | 简单逻辑 ✅ |
| SSH处理 | 有问题但影响小 | 问题明显 | 已修复 ✅ |
| ARP支持 | 无 | 有但未正确处理 | 无(保持v1.0.0) ✅ |
非verbose格式(成功):
LLDP neighbor-information of port 20[GigabitEthernet1/0/20]:
ChassisID/subtype: a4bb-6de2-62cd/MAC address
PortID/subtype: GigabitEthernet0/0/1/Interface name
verbose格式(失败):
LLDP neighbor-information of port 20[GigabitEthernet1/0/20]:
Chassis ID: 642f-c7e0-0333
System name: RemoteDeviceHostname
Port ID type: Interface name(7)
Port ID: GigabitEthernet1/0/48
Management address: 192.168.1.1
...
修复后应该能够:
成功获取LLDP邻居
避免SSH输出混杂
正确建立拓扑连接
运行修复后的程序:
.\network-topology.exe
添加设备 172.16.8.1(H3C设备)
查看调试输出:
Parsed neighbor MAC: mac-address (from line: ...)
Parsed neighbor interface: GigabitEthernetX/X/X
Device 172.16.8.1: 25 interfaces, X neighbors
验证拓扑图显示邻居连接
v1.0.0版本成功的关键:
我们现在的修复: