SNMP:如何查找计算机的 IP 和 MAC 地址?(Debian)

SNMP:如何查找计算机的 IP 和 MAC 地址?(Debian)

我正在使用 Net-SNMP,并尝试查找我的计算机 IP 和 MAC 地址,但它不起作用。这是我正在运行的命令:

snmpget -v 2c -c public localhost 1.3.6.1.2.1.4

我收到此消息:

IP-MIB::ip = No Such Object available on this agent at this OID

我也尝试过这个:

snmpwalk -v 2c -c public localhost sysORID.7

但我得到的答复是:

SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip

我做错了什么?谢谢!

答案1

  1. 要获取与接口相关的信息,您需要 IF-MIB。具体来说,轮询IF-MIB::ifPhysAddressOID 以获取 MAC 地址,例如:

    snmpwalk -v 2c -c public localhost IF-MIB::ifPhysAddress
    

    根据盒子上有多少个接口,这将返回一行或多行。它们可能看起来像这样:

    IF-MIB::ifPhysAddress.1 = STRING: 01:23:45:67:89:AA
    IF-MIB::ifPhysAddress.2 = STRING: 01:23:45:67:89:AB
    IF-MIB::ifPhysAddress.3 = STRING: 01:23:45:67:89:AC
    

    末尾.XIF-MIB::ifPhysAddress.1表示对象的索引;在此特定情况下,表示接口的索引。然后,您可以轮询IF-MIB::ifDescr以查看哪个索引对应哪个接口,例如:

     IF-MIB::ifDescr.1 = STRING: sit0
     IF-MIB::ifDescr.2 = STRING: eth0
     IF-MIB::ifDescr.3 = STRING: eth1
    

    或者,你可以遍历整个子树:

     snmpwalk -v 2c -c public localhost IF-MIB::ifEntry
    

    因为这会产生非常长的、不是特别易读的输出,特别是如果有很多接口),您可以执行以下操作来获取有关单个接口的信息(2此示例中带有索引):

     snmpwalk -v 2c -c public localhost IF-MIB::ifEntry | grep '\.2 '
    

    或者,您可以轮询一个表并获取更整洁的输出(使用-Cf标志设置分隔符):

     snmptable -Cf \; -v 2c -c public localhost IF-MIB::ifTable
    
  2. 要获取 IP 地址,您需要 IP-MIB。您可以对这些 OID 使用上面描述的相同技术:IP-MIB::ipAddrTableIP-MIB::ipAddrEntry

  3. 您可以使用 探索 MIB 以snmptranslate阅读 OID 的描述,或查看 MIB 的结构。请参阅 snmptranslate 的手册页以获取更多信息。例如:

     snmptranslate -Td IF-MIB::ifTable
     snmptranslate -Tp IP-MIB::ipAddrTable
    

相关内容