linux - 在 Procurve Switch 上通过 SNMP 获取 VLAN 标记或取消标记

标签 linux networking snmp net-snmp

如果端口所属的 VLAN 在 Procurve 交换机上被标记或未标记,我如何通过 SNMP 获取?

我发现这个 OID:.1.3.6.1.2.1.17.7.1.4.3.1.4 它返回一系列十六进制代码,应该告诉我哪个端口属于一个 vlan (这是 vlan 1 和 100 的摘录):

snmpwalk -v2c -c public 192.168.0.1 .1.3.6.1.2.1.17.7.1.4.3.1.4<p></p>

<p>SNMPv2-SMI::mib-2.17.7.1.4.3.1.4.1 = Hex-STRING: 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF 00 
00 03 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
FF FF FF FF FF FF FF FF 80 00 00 00 </p>

<p>SNMPv2-SMI::mib-2.17.7.1.4.3.1.4.100 = Hex-STRING: FF FF FF FF E0 00 00 00 00 00 00 00 00 00 00 00 
03 F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00
</p>

我的问题是:

  1. 如何从这个 HEX 代码中获取 ifindex?

  2. 我如何理解端口是标记的还是未标记的? 谢谢。

最佳答案

1.3.6.1.2.1.17.7.1.4.3.1.4 是 dot1qVlanStaticUntaggedPorts,dot1qVlanStaticTable 的一部分,在 Q-BRIDGE-MIB 中定义。如果此对象列出了一个端口,则它是未标记的。如果端口在 dot1qVlanStaticEgressPorts 中列出,也是 dot1qVlanStaticTable 的一部分,但在 dot1qVlanStaticUntaggedPorts 中列出,则它被标记。

dot1qVlanStaticEgressPorts 和 dot1qVlanStaticUntaggedPorts 都是 PortList 类型,也在 Q-BRIDGE-MIB 中定义。每个八位位组的每一位对应一个 ifIndex,第一个八位位组的最高位为 ifIndex=1,下一位为 ifIndex=2,依此类推。如果该位为1,则为成员;如果它是 0 则它不是。

奇怪的是代理会返回这么长的值(=很多,很多,很多端口)。

关于linux - 在 Procurve Switch 上通过 SNMP 获取 VLAN 标记或取消标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43408003/

相关文章:

c - pThread 同步问题

linux - 需要了解主机和容器中 "ulimit"的 nofile 设置

UFW 阻止了 Docker 本地主机连接

floating-point - 通过 SNMP 显示 float 的好方法是什么?

linux - 如果不是当前文件,则重命名文件

linux - 将 df 存储在变量中不起作用

java - 网络游戏状态更改时小程序游戏更新屏幕

sockets - 为什么 skb_buffer 需要跳过 20 个字节才能在数据包输入时读取传输缓冲区?

linux - SNMP 管理树莓派