Snmp: відмінності між версіями
Sv (обговорення | внесок) |
Sv (обговорення | внесок) |
||
Рядок 19: | Рядок 19: | ||
* На свиче 10.100.100.14 нет параметра 1.3.6.1.2.1.1.1.0 | * На свиче 10.100.100.14 нет параметра 1.3.6.1.2.1.1.1.0 | ||
Параметры Snmp (mib-ы) в некоторой степени стандартизированы, но иногда бывают отличия даже в разных моделях устройств одного производителя. Невозможно дать универсальные команды по включению и настройке snmp в конкретном устройстве - вам необходимо изучить документацию к нему. Но обычно интуитивно понятно и, зачастую, команды для настройки snmp можно узнать путем просмотра текущего конфига устройства. | |||
<br> | <br> |
Версія за 08:27, 25 жовтня 2018
Ставим Net::SNMP
cd /usr/ports/net-mgmt/p5-Net-SNMP && make install clean
Запрашиваем по snmp у свича 10.100.100.14 параметр «описание устройства»:
snmpwalk -v2c -c public 10.100.100.14 1.3.6.1.2.1.1.1.0
Если не получили информацию, возможно:
- На свиче 10.100.100.14 не включен snmp версии v2c
- На свиче 10.100.100.14 не создана snmp community = public
- На свиче 10.100.100.14 нет параметра 1.3.6.1.2.1.1.1.0
Параметры Snmp (mib-ы) в некоторой степени стандартизированы, но иногда бывают отличия даже в разных моделях устройств одного производителя. Невозможно дать универсальные команды по включению и настройке snmp в конкретном устройстве - вам необходимо изучить документацию к нему. Но обычно интуитивно понятно и, зачастую, команды для настройки snmp можно узнать путем просмотра текущего конфига устройства.
В админке, в меню «Настройки» → «Группы» создаем группу «Свичи», у которой устанавливаем такие параметры:
- Имя идентификационного поля: Инвентарный номер
- Не имеют ФИО, договор, пароль: ставим галку
- Не имеют баланса: ставим галку
- К учетным записям не подключаются услуги: ставим галку
- Учетные записи имеют сущность «Порты»: ставим галку
В меню «Настройки» → «Доп.поля» проверяем, что инсталятор создал поле:
- Имя поля: snmp конфиг
- Имя поля в бд: _snmp
- Тип поля: выпадающий список
- Тип объекта: snmp
Здесь же ставим галку напротив группы «Свичи».
В группе «Свичи» создаем учетную запись свича, добавляем ip и параметр «snmp конфиг» устанавливаем в значение «Стандартный свич». После этого пробуем получить данные свича нажав на ссылку «Инфо по snmp». Если не получаем никаких данных, то включаем debug режим на титульной странице, повторяем запрос «Инфо по snmp» и смотрим в debug.
Комментарии к портам можно установить в меню «Порты» на странице данных текущего свича.
Теперь для безопасности на свиче изменим community, например, на название сети CoolNet.
Проверим:
snmpwalk -v2c -c CoolNet 10.100.100.14 1.3.6.1.2.1.1.1.0
Создадим параметры подключения
В меню «Документы» создадим папку Snmp. В ней создадим документ с именем, например, «Соединения». Обязательно добавим тег snmp_connection
Содержимое документа:
%connection = ( Community => 'CoolNet', Version => 2, );
Создадим конфигурационный файл для свичей Planet: документ с именем Planet и обязательно с тегом: snmp_device
Содержимое документа:
$c = Get_config 'Planet'; $c->Set_connection( %connection );
Получили уже созданный системой конфиг Planet и установили параметры соединения: Community = 'CoolNet'.
Проверяем в админке получение данных свича. Пробуем выключить его какой-либо порт. Учтите, что в настройках самого свича, community CoolNet должно иметь права на изменение данных.
Добавим какой-нибудь mib в список отображаемых данных:
$c->Object('sysContact', oid => '1.3.6.1.2.1.1.4.0', name => 'Тестовый параметр', ); $c->Add_show_param('sysContact');
Здесь мы создали новый mib с кодом sysContact = '1.3.6.1.2.1.1.4.0' и с помощью Add_show_param добавили его в список отображаемых параметров.
Изменение отображаемой информации
Допустим, по snmp мы получаем какие-то значения в неудобном для восприятия виде. Например, ifAdminStatus возвращает 1 если порт включен, 2 - если выключен. Давайте заменим 1 на «включен», а 2 на «выключен». Хотя это уже сделано в стандартном конфиге, но мы для примера перезапишем:
$c->Object('ifAdminStatus', oid => '1.3.6.1.2.1.2.2.1.7.', name => 'Включен?', values => { 1 => 'включен', 2 => 'выключен', 3 => 'тестируется', }, css => { 2 => 'error', }, set => { 1 => 'Включить', 2 => 'Выключить', }, );
Будьте внимательны и не ошибитесь в скобочках и стрелочках.
Обратите внимание, что в mib мы добавили еще 2 параметра: css - будет выводить красным цветом (error) значение 2 (порт отключен), set - позволяет менять параметр из админки. Если параметра set не будет, mib будет доступен только для чтения.
Если же мы хотим произвести более сложные действия с отображаемыми данными, то можем ключ values указать на фрагмент кода:
$c->Object('xxxxxxxx', oid => 'x.x.x.x.x.x.x.x.', name => 'Мак-адрес', values => sub { my($value) = @_; $value =~ s/^0x//; return [ url->a($value, a => 'mac_info', mac => $value) ]; } );
В данном примере, при выводе информации по портам, в колонке «Мак-адрес» будет выведен мак-адрес без префикса 0x (0x001122334455 преобразуется в 001122334455). При этом он будет оформлен как ссылка на поиск информации о мак-адресе в NoDeny.
Пример 1
Вывод мак-адресов на портах свича:
$c->{cfg}{dot1dTpFdbPort} = { oid => '1.3.6.1.2.1.17.4.3.1.1.', name => 'Порт по маку', }; $c->{cfg}{Show_ports} = [ 'dot1dTpFdbPort', 'ifAdminStatus', 'ifOperStatus', 'ifSpeed', 'ifInErrors', 'ifAlias', ];