Snmp: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Рядок 13: Рядок 13:
</source>
</source>


Если не получили информацию:
Если не получили информацию, возможно:


* На свиче 10.100.100.14 не включен snmp версии v2c
* На свиче 10.100.100.14 не включен snmp версии v2c

Версія за 08:25, 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',
];