Где хранятся значения OID SNMP MIB и тип доступа для каждого OID, указанного в файле MIB, во встроенных системах на базе Linux? (например, сетевое оборудование, телевизионные приставки, управление машинами, промышленная автоматизация) Должна быть внутренняя база данных для хранения всех этих значений OID MIB, имен, типов доступа внутри.
Где хранятся значения OID MIB?
Ответы (2)
Как правило, существует несколько способов существования данных и доступа к ним со стороны агента snmp:
1) Внутренняя память агента, обычно только для настройки и мониторинга самого агента
2) Агент выполняет системные вызовы для запроса локального устройства/программного обеспечения для поиска необходимой информации. Например, когда вы запрашиваете время безотказной работы машины из HOST-RESOURCES-MIB, агент определит это, запросив ядро (через API или через файловую систему, подобную /proc, или...)
3) Агент взаимодействует с чем-то еще через некий механизм, подобный RPC. Одним из таких механизмов является протокол AgentX, который представляет собой протокол между главным агентом и субагентом, являющийся подмножеством SNMP для использования в локальной системе. Субагенты регистрируются у главного агента, указывая, что они хотят предложить обслуживание для некоторой части дерева MIB.
По сути, очень редко сам агент знает данные. Почти всегда приходится запрашивать что-то еще в системе, чтобы сообщить информацию.
Вообще говоря, для агентов на основе net-snmp определения объектов используются для создания исходных файлов C, которые в конечном итоге создаются и связываются с агентом SNMP, snmpd. Я не читал весь исходный код net-snmp, но сомневаюсь, что используется внутренняя база данных.