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

标签 snmp

我正在使用 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/

相关文章:

linux - 使用 chroot 运行 snmp 没有给出当前值

c# - 在 snmptrap.exe 运行时捕获 SNMP 陷阱

spring - JMX 对象如何映射到 SNMP OID?

windows - 如何通过SNMP或其他方式监控Windows CPU和风扇温度

snmp - 是否可以在没有 MIB 支持的情况下使用 SNMP 代理?

php - PHP/Linux 中的 SNMP 陷阱

python - 打印 snmpwalk 结果的数量

java - 有没有办法使用 java 套接字程序查找打印机状态?

networking - 什么叫MIB-Module?

java - 使用 Snmp4j 进行网络发现