Значение динамического индекса SNMP4J

Я пытаюсь создать клиент для получения значений с устройства с поддержкой snmp, используя snmp4j. Используя OID и порядковый номер, я могу получить имя и серийный номер устройства. Но я слышал, что порядковый номер непостоянен и постоянно меняется. Вы можете найти требуемый порядковый номер (например, сетевого интерфейса) среди SNMP OID, иногда мы не можем полностью полагаться на то, что порядковый номер всегда остается одним и тем же.

Номера индексов могут быть динамическими — они могут меняться со временем, и, как следствие, ваш товар может перестать работать.

Итак, мне нужно найти способ динамического получения индексного номера. Или есть ли способ получить серийный номер без жесткого кодирования серийного номера.

Один OID может иметь 150 индексов, каждый из которых имеет свое значение. мне нужно получить конкретную информацию из этой таблицы.


person user3427761    schedule 17.03.2014    source источник


Ответы (1)


(К сожалению) нет ничего необычного в том, что номера индексов меняются. Например, некоторое оборудование переупорядочивает некоторые столы при перезагрузке.

Вы, наверное, уже поняли, что если значения индекса изменчивы, вы не сможете получить данные за один запрос. Но вы могли бы сделать это, «пройдясь» по столу.

Используя GetNextRequest, вы можете начать с заголовков столбцов, а затем перейти к таблице, извлекая все данные или только отдельные столбцы. Более подробный пример см. в разделе 4.2.2.1 RFC 1905: http://tools.ietf.org/html/rfc1905

Предполагая, что в таблице есть столбец, который идентифицирует правильную карту, вы можете:

  1. Пройдите только по столбцу идентификации и из значений найдите индекс нужной карты, затем выполните один GetRequest для серийного номера этой карты.

  2. (Более эффективно) Пройдите оба столбца (идентификатор и серийный номер), запросив заголовки этих двух столбцов в первом запросе и т. д. В результирующем наборе данных найдите данные для своей карты.

person Jolta    schedule 03.04.2014