我正在使用 snmpwalk 来检索我的系统(localhost)或远程系统的 MAC 地址,并且我正在使用以下命令:
snmpwalk -v2c -c public localhost .1.3.6.1.2.1.2.2.1.6
并收到类似 noSuchObject
的错误。
如何解决这个错误?还有其他方法使用 snmp 获取系统 mac 地址吗?
最佳答案
不存在“系统MAC地址”这样的东西。系统没有MAC地址;网络接口(interface)确实如此,并且系统可能有零个、一个、两个或更多个网络接口(interface)。
这就是您使用 snmpwalk
的原因:因为 .1.3.6.1.2.1.2.2.1.6(即 ifPhysAddress
)是表中的一列 接口(interface),并且您事先不知道将返回多少概念行(以及每行将使用什么唯一数字索引作为其键)。
所以,您正确使用了该命令。但接下来我们必须考虑到,自从 SNMP 和 SMI RFC 编写以来,时代已经发生了变化,早在互联网繁荣之前,那时互联网还是一个相对令人愉快和快乐的地方。如今,实现在所披露的信息方面往往更加保守,因为您披露的每一条信息都可能是攻击您系统的另一种方式。为什么任何人需要访问才能知道您系统的 MAC 地址?他们可能不知道。我最近创建了一个 SNMP 代理,它对“标准”对象的支持远未列出网络接口(interface)。当 RFC1907 采用“安全”子集时,snmp
中的许多 RFC1213 数据包/状态计数器被故意废弃。
这对您来说意味着什么?那么,远程系统必须有一个网络接口(interface),否则您将无法与其通信。因此,您正在轮询/查询的 SNMP 代理(您没有说明是哪个)要么是硬编码的,要么配置为不提供此信息。你无法解决这个问题,除非与创建该软件的人交谈并询问它是否可配置;做好回答“不”的准备。
关于snmp - 如何使用snmp获取系统的Mac地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50129507/