Назад | Перейти на главную страницу

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. Чтобы получить информацию об интерфейсе, вам понадобится IF-MIB. В частности, опрос IF-MIB::ifPhysAddress OID для получения 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
    

    В .X в конце IF-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::ipAddrTable и IP-MIB::ipAddrEntry.

  3. Вы можете изучить MIB с помощью snmptranslate чтобы прочитать описания OID или увидеть структуру MIB. Обратитесь к руководству snmptranslate для получения дополнительной информации. Например:

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