Linux is working. The future is open.
Получение информации с устройства по различным параметрам - важные и нередкие цели IT-специалиста. Это мониторинг, управление, эти данные помогают принимать правильные решения. Тут будет очень кстати протокол SNMP. Для этого нам нужно знать OID того или иного параметра. В Linux есть команды snmpwalk и snmpget. Простым языком изъясняясь можно сказать, что первой командой мы можем обращаться к тем OID'ам, которые возвращают несколько значений, а второй, snmpget, - мы можем получить лишь то, что из себя представляет единичный результат.
Перейдем к более конкретным действиям. К примеру коммутатор, мы знаем названия порта, как узнать числовой ID интерфейса в дереве SNMP девайса? Для начала посмотрим список всех интерфейсов. Т. к. интерфейсов несколько, то для вывода списка значений нам нужна команда snmpwalk:
# snmpwalk -c public -v 2c myswitch 1.3.6.1.2.1.31.1.1.1.1
Здесь public - комьюнити, фактически пароль для доступа к устройству по SNMP, myswitch - адрес девайса, IP или DNS-имя.
И так, мы обратились к "ветке" с "адресом" 1.3.6.1.2.1.31.1.1.1.1, и получили ее "листочки", имена которых из себя предствавляют адрес родителя плюс уникальный идентификатор нашего параметра. Возьмем из результата одну строчку с портом, имя которого "ae3". У меня на Juniper'е она выглядит так:
iso.3.6.1.2.1.31.1.1.1.1.569 = STRING: "ae3"
С помощью команды snmpget мы можем обратиться на "адрес" iso.3.6.1.2.1.31.1.1.1.1.569 и получим единичный параметр, представляющий из себя тот же самый результат:
# snmpget -c public -v 2c myswitch iso.3.6.1.2.1.31.1.1.1.1.569 iso.3.6.1.2.1.31.1.1.1.1.569 = STRING: "ae3"
Теперь мы знаем, что интерфейс ae3 имеет идентификатор 569. Что мы можем с этим сделать? Ну, к примеру получать количество переданного трафика через интерфейс. Количество полученных байт (rx) по портам "хранится" в "дереве" 1.3.6.1.2.1.31.1.1.1.6. С помощью snmpwalk мы можем получить информацию по всем портам. Нас же интересует один конкретный порт, и теперь, когда мы знаем его ID, можем обратитсья именно на нужный нам OID, добавив его к концу адреса дерева идентификатор порта:
# snmpget -c public -v 2c myswitch 1.3.6.1.2.1.31.1.1.1.6.569 iso.3.6.1.2.1.31.1.1.1.6.569 = Counter64: 697429714360
Вот так легко и просто зная "адрес" "ветки" для того или иного параметра и зная ID интерфейса можно получить нужный нам параметр по SNMP.
5 сен 2014 г. | Теги: SNMP