通过SNMP在第3层端口上获取MAC?

通过SNMP在第3层端口上获取MAC?,snmp,mac-address,cisco,Snmp,Mac Address,Cisco,我正在编写一个脚本来映射连接到交换机和路由器的服务器。我已经开始映射第二层端口,使用中列出的算法提取MAC地址 第3层端口是另一回事。这些端口不会显示在路由器/第3层交换机上的“sh vlan”命令中。理想情况下,我希望使用这些端口中的MAC地址,作为第3层连接的基础,因为这比IP地址更“永久”,它们确实显示在设备的MAC地址表中。然而,这些端口没有相关的VLAN,并且通过SNMP检索MAC是VLAN索引的,这一事实使得检索非常困难 我已经为此绞尽脑汁大约一个星期了,但我尝试/发现的似乎都不允许

我正在编写一个脚本来映射连接到交换机和路由器的服务器。我已经开始映射第二层端口,使用中列出的算法提取MAC地址

第3层端口是另一回事。这些端口不会显示在路由器/第3层交换机上的“sh vlan”命令中。理想情况下,我希望使用这些端口中的MAC地址,作为第3层连接的基础,因为这比IP地址更“永久”,它们确实显示在设备的MAC地址表中。然而,这些端口没有相关的VLAN,并且通过SNMP检索MAC是VLAN索引的,这一事实使得检索非常困难


我已经为此绞尽脑汁大约一个星期了,但我尝试/发现的似乎都不允许我获得非VLAN MAC地址。可以这样映射第三层端口吗,或者我需要使用第三层IP地址映射吗?

如果您通过第二层连接到设备,您可以在第三层地址上使用ping来生成arp查找,然后在arp缓存中查找mac。。。这适用于任何第3层端口,甚至逻辑端口,如第3层版本的PortChannel。 这可能是最简单的方法

如果您希望100%处于SNMP领域:

要获取该设备的接口表,请浏览下面的oid。它会回来的 该设备上所有接口的列表。这应该适用于任何设备,即使是运行SNMP代理的服务器:

.1.3.6.1.2.1.2.2.1.2
这将为您提供OID中最后一位的接口编号列表,以及接口描述。它适用于SVI和物理接口,不确定SVI以外的逻辑类型

然后,对于每个接口,要获取其mac,其中x是接口表中的值:

.1.3.6.1.2.1.2.2.1.6.x
这给了你苹果电脑。在某些设备上,可以截断前导0。 但是,每个设备上至少需要1个第3层地址才能进行snmpwalk和get

如果你只是想要所有的Mac电脑,那么走这条路:

.1.3.6.1.2.1.2.2.1.6

我使用这种方法在大型网络上执行类似操作。

FYI,这不会提供连接的mac地址。这将为您提供接口的mac地址。