如何使用 snmp 获取系统的 Mac 地址?

How to get Mac address of system using snmp?

我正在使用 snmpwalk 检索我的系统(本地主机)或远程系统的 mac 地址,我正在使用此命令:

snmpwalk -v2c -c public localhost .1.3.6.1.2.1.2.2.1.6

并得到类似 noSuchObject 的错误。

如何解决这个错误?还有其他方法可以使用 snmp 获取系统 mac 地址吗?

没有"system MAC address"这样的东西。系统没有 MAC 个地址;网络接口可以,一个系统可能有零个、一个、两个或更多网络接口。

这就是您使用 snmpwalk 的原因:因为 .1.3.6.1.2.1.2.2.1.6(即 ifPhysAddress)是 table[ 中的一列=23=] 的接口,你事先不知道你会得到多少概念行(以及每行将使用什么唯一的数字索引作为它的键)。

所以,您正确地使用了命令。但接下来我们必须考虑到,自从编写 SNMP 和 SMI RFC 以来,时代已经发生了变化,远在互联网繁荣之前,回到互联网还是一个相对愉快和快乐的地方。如今,实现在披露信息方面往往要保守得多,因为您披露的每条信息都可能是另一种攻击系统的方式。为什么有人 需要 访问权限才能知道您系统的 MAC 地址?他们可能不会。我最近创建了一个 SNMP 代理,它对 "standard" 对象的支持在列出网络接口方面没有任何进展。当 "safe" 子集被 RFC1907 采用时,snmp 中的许多 RFC1213 packet/status 计数器被故意废弃。

这对你意味着什么?好吧,远程系统必须有一个网络接口,否则你将无法与它交谈。因此,您 polling/querying(您没有说是哪个)的 SNMP 代理被硬编码或配置为不提供此信息。你无法绕过这个问题,除非与创建软件的人交谈并询问它是否可配置;准备答案是 "no".