Я играю с 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
Что я делаю не так? Спасибо!
Чтобы получить информацию об интерфейсе, вам понадобится 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
Для получения IP-адресов вам потребуется IP-MIB. Для этих OID вы можете использовать те же методы, которые описаны выше: IP-MIB::ipAddrTable
и IP-MIB::ipAddrEntry
.
Вы можете изучить MIB с помощью snmptranslate
чтобы прочитать описания OID или увидеть структуру MIB. Обратитесь к руководству snmptranslate для получения дополнительной информации. Например:
snmptranslate -Td IF-MIB::ifTable
snmptranslate -Tp IP-MIB::ipAddrTable