Как отправить snmp trap windows

Обновлено: 07.07.2024

Утилита snmptranslate позволяет с командной строки изучать MIB-деревья.
В самом простом случае, она принимает в качестве аргумента OID и выводит его тестовое описание: Возможно также обратное преобразование, для этого необходимо только добавить опцию -On Заметьте, что аргумент, передаваемый программе, может описывать OID в любом виде, и опция -On влияет только на вывод ( -O , от слова Output): Хотите узнать полное значение OID? Используйте опцию -Of: Проблема с вышеупомянутой командой в том, что вам необходимо помнить весь OID, который вы хотите использовать в аргументе.
Ничего страшного, используйте опцию -IR ( -I , от слова Input) для поиска по всему MIB-дереву: С помощью опции -Ib возможен поиск по MIB-дереву с использованием регулярных выражений: Чтобы получить весь список найденных по регулярному выражению значений, используйте опцию -TB : Получить дополнительную информацию о MIB-узлем можно с -Td (description) опцией: И наконец, если вы хотите получить аккуратную диаграмму секции MIB-дерева, используйте -Tp опцию: Запустив snmptranslate -Tp без каких-либо аргументов, можно получить всё MIB-дерево целиком.

snmpget: получение информации с удалённого хоста

snmpgetnext: получение информации следующего OID'а

Команда snmpgetnext похожа на snmpget, с тем лишь различием, что возвращает OID и его значение, следующее в MIB-дереве за тем, что указано в качестве аргумента:

Так, snmpgetnext может использоваться для последовательного просмотра OID'ов просто путём указания в аргументе последнего полученного OID'а:
Фактически команда snmpwalk, рассматриваемая ниже, делает то же самое за один раз!
В отличие от snmpget, snmpgetnext возвращает значение для OID'а, написанного без индекса(см. про snmpget выше). В таком случае с snmpgetnext не будет возникать ошибки, т.к. вы получаете значение следующей переменной независимо от того, указан ли индекс для переменной в аргументе команды:

snmpwalk: серия snmpnext комманд за раз

Команда snmpwalk автоматически выполняет серию snmpnext команд внутри заданного OID'ом диапазона. К примеру, если вы хотите получить всю информацию, хранящуюся в MIB группе system, используйте следующую команду:

snmptable: отображение SNMP-таблицы

Команда snmptable отображает SNMP таблицу в разбитом на колонки виде. Рассмотрим данные sysORTable. В отличие от команды snmpwalk, отображающей данные в виде длинного списка, snmptable форматирует вывод в удобном для чтения виде (иногда, как в примере ниже, вывод может быть весьма широк):

Но вы можете менять ширину выводимой таблицы:

snmpset: изменение OID'ов

Команда snmpset используется для изменения данных на удалённом хосте/устройстве. Для каждой переменной, что вам необходимо изменить, необходимо указать OID, тип данных и само значение.
Вы можете увидеть поддерживаемые типы данных в конце вывода команды snmpset, запущенной с ключом -h :
Для примера проверим, а затем изменим значение OID'а, используя snmpget и snmpset:

snmptrap: посылка и принятие TRAP'ов, реагирование на них

TRAP'ы(ловушки) могут использоваться для уведомления станции управления о каких-либо неполадках.
Далее мы рассмотрим определение TRAP'ов в MIB-файлах, создание их с помощью утилиты snmptrap , и приём утилитой snmptrapd .
Примечание: как уже было отмечено, запись OID'а использует нотацию типа МОДУЛЬ::идентификатор, что используется в нижеприведённых примерах, а вывод команды snmptrapd подразумевает использование опции -OS.
Определение TRAP'ов.
TRAP'ы SNMPv1 и SNMPv2(INFORM'ы) используют два совершенно разных вида определений.
TRAP'ы SNMPv1 определяются в MIB файле используя макроопределение TRAP-TYPE, как в следующем примере: Так мы определили одну enterprice-специфичную TRAP, которая может быть вызвана следующим образом:

При её получении snmptrapd выведет такой текст на экран: Формат INFORM'ов SNMPv2 отличен от формата TRAP'ов SNMPv1 и выглядит подобным образом: Это определение аналогично TRAP'у SNMPv1 что рассматривали выше. Так выглядит вызов INFORM'а SNMPv2:

А так - вывод snmptrapd при получении INFORM'а: Определение действий при приёме TRAP'ов и INFORM'ов.
Утилита snmptrapd имеет возможность выполнять другие программы в случае получения ловушки-уведомления. Этим управляет директива traphandle, имеющая следующий синтаксис: Заметьте, что в качестве информации о том, какая TRAP(или INFORM) будет получена, используется OID. Это подразумевает под собой необходимость представления ловушек SNMPv1 в формате SNMPv2, что описано в RFC 2089. Обычно OID для описанной выше TRAP создаётся путём взятия ENTERPRICE параметра и добавления к нему под-идентификаторов 0 и 17. Значения OID'а для SNMPv1 TRAP'ов определяются аналогично SNMPv2.
Команда определят название программы, запускаемой при получении TRAP демоном snmptrapd . Программа получает данные TRAP на стандартный ввод. Первая строка - это имя хоста, вторая - IP-адрес отправителя TRAP, и последующие линии содержат пары значений OID ЗНАЧЕНИЕ с данными из полученной TRAP.
Пример shell-скрипта, вызываемого snmptrapd : Далее используем следующий snmptrapd.conf файл: И имитируем отключение сетевого интерфейса с помощью snmptrap :

получаем такой вывод от snmptrapd : и такой вывод нашей handler-программы:

вызов нашей enterprice specific TRAP'ы даёт такой вывод handler-программы:

и напоследок - наш enterprice specific INFORM:

Генерация TRAP'ов агентом
Агент также способен посылать TRAP'ы. При запуске генерируется TRAP SNMPv2-MIB::coldStart, а при выключении UCD-SNMP-MIB::ucdShutDown
Эти TRAP'ы отправляются хостам, определённым в snmpd.conf файле с помощью директив trapsink и trap2sink (для SNMPv1 и SNMPv2 соответственно) Дополнительно агент может отсылать TRAP'ы в случае неудавшейся аутентификации хостам, указанным директивой authtrapenable файла snmpd.conf , или путём активации переменной SNMPv2-MIB::snmpEnableAuthenTraps:

Отправка и приём TRAP'ов и INFORM'ов для SNMPv3

  1. Остановите запущённую snmptrapd
  2. Добавьте в /var/net-snmp/snmptrapd.conf следующую строку:
  3. Где myuser это securityName, mypassword - это пароль для аутентификации, а myotherpassword - это пароль для шифрования(оставьте его пустым, если не хотите менять или не хотите использовать шифрование)
  4. Перезапустите программу snmptrapd
  1. Остановите snmptrapd
  2. вставьте в файл /var/net-snmp/snmptrapd.conf следующую строку:
  3. Заметьте, что значение engineID пользователя явно задано как 0x0102030405(это не рекомендуется, но в действительности не имеет значения)
  4. (пере)запустите snmptrapd .

Вывод будет аналогичен предыдущему примеру.
Далее должно идти долгое объяснение про v3 engineID, INFORM'ы, TRAP'ы, обнаружение engineID, секретные ключи, пароли, локальные ключи и пр. Всё это безобразие занимает 18223 строк текста в RFC 2570-2575, потому не будем повторяться здесь.

Использование локальных MIB-файлов

Ага, она не знает. Теперь мы должны скачать файл CISCO-RHINO-MIB.mib и поместить его в директорию, где он будет найден утилитами Net-SNMP. Скопируем его в $HOME/.snmp/mibs .
Воспользуемся флагом -m команды snmptranslate для загрузки MIB'а. Использование опции " -m +CISCO-RHINO-MIB указывает на загрузку не только MIB'ов, использующихся по-умолчанию, но также и на загрузку CISCO-RHINO-MIB(знак '+' означает "добавить").


Опа. Из первой строки можно увидеть, что нам также необходим CISCO-SMI MIB. Скачиваем его и копируем в $HOME/.snmp/mibs . Выполняем команду повторно:

Работает!
Ещё один момент: вы можете набрать эту команду другим способом(такой набор наиболее предпочтителен и рекомендуется ведущими разработчиками Net-SNMP):

Вас наверняка интересует, как сделать, чтобы нужные MIB'ы автоматически подгружались утилитами Net-SNMP без их явного указания в командной строке. Есть несколько путей сделать это.
Примечание пользователям программы Ethereal: Один из этих методов годится и для Ethereal, т.к. тот не имеет возможности подгружать нужные MIB'ы используя опции -m и -M , что мы рассматривали выше.
В первую очередь вы можете поместить следующие строки в файл snmp.conf . Этот файл может быть помещён как в системный конфигурационный файл Net-SNMP(напр. /usr/local/share/snmp.conf ), так и в персональный( $HOME/.snmp/snmp.conf ): Для указания нужных MIB'ов можно также использовать переменную окружения с названием MIBS(далее пример для оболочки /bin/sh ):

Опции специфичные для SNMPv3

  • USM - User-based Security Module, содежит список пользователей и их атрибутов. USM описан в RFC 2574.
  • VACM - Version-based Access Control Module, контроллирует доступ пользователей(так и SNMPv1/v2c communities), в т.ч. доступ к определённым секциям MIB-дерева. VACM описан в RFC 2575.

/.snmp/snmp.conf , используя третью колонку таблицы.

Запрос с аутентификацией:

И наконец, запрос с аутентификацией и шифрованием:

Конечно же они все выглядят похоже т.к. работают подобным образом. Но хост в примерах выше позволял использовать любой уровень аутентификации. Хосты, что вы будете настраивать, должны иметь более жёсткие правила безопасности и иметь хотя бы authNoPriv уровень при настройке VACM контроля доступа. И в завершении, пропишем snmp.conf подобным образом: Таким образом все аргументы, используемые нами ранее в командной строке, будут автоматически браться из этого файла:

Опции влияющие на формат вывода

Все команды пакета Net-SNMP, за исключением snmptrapd и snmpd , могут использовать опции которые мы рассмотрим ниже.
Для получения списка всех опций запустите программу с опцией " -h ". С помощью флага -O , передаваемого в качестве опции командам Net-SNMP, можно изменять формат вывода:

Несколько примеров использования этой возможности:

-On
Данный флаг позволяет выводить OID'ы в числовом формате вместо текстового:


-Oe
Этот флаг определяет, нужно ли показывать обяснение(перед числом в скобках) полученного числового значения:


-Ob
Многие SNMP таблицы используют в качестве индекса строки. Затем строки транслируются в OID сегменты для выполнения SNMP запроса. Давайте попробуем разобраться в этом на следующем примере. Рассморим OID usmUserEntry:

Как видите, usmUserEntry использует в качестве индексов два строковых значения: usmUserEngineID и usmUserName. По умолчанию команды Net-SNMP используют вывод, наиболее понятный для человека: Видим два OID'а: значение одного - ". ", другого - "MD5User". Первое строковое значение представляет собой engineID, которое состоит из непечатных символов(отсюда и многоточие), второе же - представляет собой как раз строку, которую мы безо всяких проблем можем прочесть. Немного подумав, пробуем просмотреть индексы в числовом виде: Как видите, OID'ы - это не просто строковое значение, порою всё несколько сложнее.
При использовании строковых значений в командах Net-SNMP перед кавычками ставятся обратные слэши, как того требует большинство оболочек:
-OX
Использование этой опции является куда более лучшим методом отображения значений индексов. Обратите внимание, что такой формат используется только при выводе.
Значения, возвращаемые MIB'ами IPv6, бывает довольно сложно прочесть, формат весьма запутан по сравнению с теми значениями, что вы могли видеть.
Рассмотрим IPV6-MIB:ipv6RouteTable: видим: в качестве индекса используется IPv6 адрес и два чиловых(integer) значения. Посмотрим на это: да, не так уж легко разобраться. Тогда попробуем так: Выглядит приятнее. Такой формат выделяет квадратными скобками каждый индекс, и использует информацию DISPLAY-HINT и преобразование строк для их правильного отображения.

-Os , -OS , и -Of
Сократить вывод слишком длинных OID'ов можно с помощью опции -Os и -OS ( -OS добавляет название MIB'а перед OID'ом): Намного короче, как видите отображается только последний узел OID'а.
Опция же -Of , напротив, выводит полный OID:
-Ov
Флаг -Ov выводит только значение, но не название переменной:
-Oq
Флаг -Oq обеспечивает наиболее быстрый(q - quick) вывод, что может быть полезно в случае использования команд Net-SNMP в различных скриптах: Заметьте, что в таком формате отсутствует знак равенства и символы "OID:" спереди.
Разумеется, вы можете комбинировать разные опции: Для shell-скриптов будет полезна опция -Oqv . Команда вернёт только значение атрибута, что весьма удобно использовать в скриптах:

Эта версия Orchestrator достигла конца поддержки, мы рекомендуем выполнить обновление до Orchestrator 2019.

Настройка действия "Отправка SNMP-ловушки"

Перед настройкой действия "Отправка SNMP-ловушки" необходимо определить следующее:

IP-адрес устройства, на котором будет отправлена ловушка SNMP

Версия SNMP, которую вы будете использовать

Адрес агента, который необходимо обозначить как отправитель данных SNMP-ловушки.

Для этого действия нельзя задать индивидуальные учетные данные безопасности. Он будет выполняться от имени учетной записи службы, настроенной для службы Runbook на сервере Runbook, на котором выполняется экземпляр действия. Эта учетная запись должна иметь права доступа к ресурсам и выполнения действий, необходимых для этого действия.

Используйте следующие сведения для настройки действия "Отправка SNMP-ловушки".

Можно также добавить дополнительные сведения в SNMP-ловушку. Каждый добавляемый элемент преобразуется в элемент опубликованных данных.

Вкладка "Подробные сведения"

Параметры Инструкции по настройке
IP-адрес Введите имя компьютера или IP-адреса, на который отправляется ловушка SNMP.
порт. Введите порт, используемый для отправки SNMP-ловушки.
идентификатор Enterprise Укажите корпоративный идентификатор события, вызываемого действием "Отправка SNMP-ловушки".
Универсальный идентификатор Укажите универсальный идентификатор SNMP-ловушки. Доступно шесть вариантов:

coldStart (0): Выберите этот параметр для обозначения холодного запуска сетевого устройства. Этот параметр имеет числовое значение 0.

warmStart (1): выберите для обозначения горячего запуска сетевого устройства. Этот параметр имеет числовое значение 1.

линкдовн (2): Выберите этот параметр для обозначения серьезного подключения к сетевому устройству. Этот параметр имеет числовое значение 2.

линкуп (3): выберите для обозначения повторно установленного подключения к сетевому устройству. Этот параметр имеет числовое значение 3.

аусентикатионфаилуре (4): выберите, чтобы указать для сетевого устройства сбой проверки подлинности SNMP. Этот параметр имеет числовое значение 4.

егпнеигхборлосс (5): Выберите этот параметр для обозначения потерянного однорангового подключения ЕГП к сетевому устройству. Этот параметр имеет числовое значение 5.

Проводятся технические работы по обновлению компонентов блога. Возможно некорректное отображение некоторых элементов. Приносим свои извинения за временные неудобства. Мы стараемся сделать блог лучше =)

Переходи скоре.

вторник, апреля 19, 2016

SNMP в Windows Часть 4. SNMP Trap - мы в ловушке!

На агенте, для наших экспериментов, создадим лупбек интерфейс. Лупбек интерфейс - это программный интерфейс. Весь отсылаемый на него трафик, тут же принимается им обратно. Но в данном случае он нам нужен не для этого, а только для того чтобы сымитировать падение интерфейса. Если у вас на компьютере есть две сетевые платы, то можете не создавать лупбек, а использовать вторую плату для экспериментов.

Для того чтобы создать лупбек перейдите в "Панель управления" - "Оборудование и звук" - "Диспетчер устройств". На вкладке "Действие" выберите "Установить старое устройство". Нажмите далее. Выберите "Установка оборудования, выбранного из списка вручную", затем "Сетевые адаптеры". В левой части окна выбираем " Microsoft" , в правой "Адаптер Microsoft замыкания на себя". Нажимаем далее.

Теперь, если вы перейдете в "Панель управления" - "Сеть и интернет" - "Центр управления сетями и общим доступом" - "Изменения параметров адаптера", то вы увидите что у вас появилось новое сетевое подключение. Перейдите в его настройки и задайте ему IP адрес. После этого запустите командную строку и выполните в ней команду route print . В выводе данной команды обратите внимание на список сетевых интерфейсов и то какой номер получил ваш только что созданный лупбек интерфейс. В моем случае это номер 40. Запоминаем это и идем дальше, позже эта информация нам пригодится.

Для настройки агента SNMP на отправку Trap ов перейдем в "Панель управления" - "Система и безопасность" - "Администрирование" - "Службы". Откроем свойства службы "Служба SNMP" и перейдем на вкладку "Ловушки". Здесь мы указываем IP адрес менеджера (в моем случае это IP адрес виртуальной машины) на который мы будет отправлять Trap ы. А так же community , которое мы будем использовать для данных целей. Собственно на этом настройку агента можно считать законченной.

Перейдем к менеджеру. В качестве обработчика SNMP Trap ов можно использовать огромное число программных продуктов, но раз уж мы использовали PowerSNMP Free Manager в одной из наших предыдущих статей о SNMP , давайте задействуем его и для отлова SNMP Trap . Для этого просто запускаем его на виртуальной машине и не делаем ничего более. Все, PowerSNMP Free Manager готов для прием SNMP Trap .

Теперь когда тестовый стенд настроен займемся непосредственно экспериментом. Перейдем на виртуальную машину. Откроем PowerSNMP Free Manager. Сосредотачиваем свое внимание на вкладке Traps в нижней части его окна и ждем.

Вкладка Traps PowerSNMP Free Manager - трапов пока нет
Вкладка Traps PowerSNMP Free Manager - трапов пока нет

Теперь подождем пару секунд и перейдем в окно PowerSNMP Free Manager на станции менеджере. Если все сделано верно, то на вкладке Trap появится новая информация.

Поле GenericTrap указывает на тип произошедшего события, всего таких типов может быть 5+1:

  • coldStart (0) - говорит о том что SNMP агент был перезагружен. Все значения переменных управления сброшены на значения по умолчанию. Посылается при включении устройства;
  • warmStart (1) - говорит о том что произошел перезапуск SNMP агента Все значения переменных управления остались без изменения;
  • linkDown (2) - говорит о том что на устройстве упал какой то интерфейс;
  • linkUp (3) - говорит о том что на устройстве поднялся какой то интерфейс;
  • authenticationFailure (4) - Говорит о том, что кто то пытался сделать запрос к вашему агенту с некорректным значением community ;
  • egpNeighborLoss (5) - Говорит о том что упал сосед по протоколу Exterior Gateway Protocol ( EGP );
  • enterpriseSpecific (6) - говорит о том что тип данного трапа не являться стандартным, и это нестандартное значение указывается в поле Specific Trap , и для его идентификации необходимо обратиться к документации производителя оборудования.

В открывшемся окне можно узнать номер упавшего сетевого интерфейса и его OID . Как не странно - упал интерфейс с номером 40. А именно этот номер мы уже видели ранее в выводе команды route print , как номер закрепленный за лупбек интерфейсом.

И так с помощью данного трапа мы смогли узнать что на рабочей станции с IP адресом 192.168.1.2 под управлением Windows отвалился лупбек интерфейс. Теперь я думаю вам понятен способ работы с SNMP Trap , и надеюсь вы горите желанием опробовать работу с трапами на практике.

2 коммент.:

Можно ли создавать свои OID-ы чтобы записывать в них какие нибудь числа, строки. Если есть опыт, то тоже было бы очень полезно и интересно.

В этой статье я хочу осветить вопрос работы с SNMP traps. В то время, когда я начинал разбираться с этой темой, при неплохом знании принципов работы протокола SNMP, я был удивительным образом перепутан результатами чтения документации по этому вопросу, всеми этими OID, которые нужно писать как параметры для команды snmptrap. Поиски внятной информации в интернет не дали результатов. Создавалось впечатление, что я один такой непонятливый среди тех, кто считает это элементарным.

В своей работе я использую пакет NetSNMP с открытым исходным кодом и поэтому, примеры относятся именно к этому пакету.

Я не буду останавливаться на описании дерева SNMP (считаю это действительно банальным), а начнем с пресловутого OID. OID это просто. OID, это Object ID, уникальный идентификатор объекта в дереве значений SNMP. OID может записываться в нескольких видах.

Так как уникальность мнемонического имени в пределах всех возможных MIB никто не гарантирует и не всегда сразу вспомнишь к чему относится имя (например prTable), существует следующая, на мой взгляд самая приятная форма записи: UCD-SNMP-MIB::prTable . В таком формате, кроме самого имени указывается имя MIB (можно сказать, это пространство имен)

С представлением OID разобрались. Теперь про трапы. Сразу оговорюсь, что все нижесказанное относится к версии 2с SNMP.

В протоколе SNMP есть трапы (traps) и есть информы (informs). Отличаются они тем, что трапы посылаются на станцию менеджера без гарантии их доставки, а информы гарантированно доставляются. Ну, или не доставляться, но тогда отправитель об этом узнает. Для простоты, я и то и другое называю трапом. Так нам будет прощеi.

Какая информация посылается менеджеру в трапе (информе)? А посылаются следующие данные:

Посылаем руками

snmpinform -c public -v 2c host.sample.com "" ucdavis.ucdTraps.ucdStart memTotalSwap i 1024000

Однако, иногда хочется странного, например послать трап о том, что инопланетяне тырят SCSI винчестеры прямо из корзинки или о том, что серверную заливает водой, о чем вас предупредительно оповестил самодельный датчик, которые весит на COM порту. Понятное дело, в стандартных MIB о таких странных ситуациях не упоминается. Поэтому, можно использовать произвольную последовательность цифирек для обозначения нового в мире события. Например:

snmptrap -c public -v 2c 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "Aliens opened the door"

И что характерно, это будет работать. В логе появится такая бредятинка:

Nov 22 14:08:24 snmptrapd[465]: localhost [127.0.0.1]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (736247) 2:02:42.47, SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::org.3.3.3.3.3.3, iso.2.2.2.2.2.2 = STRING: " Aliens opened the door"

В то же время, крутые администраторы должны все делать правильно, самодокументируемо, в соответствии с требованиями IETF и других компетентных организаций. Поэтому, будем описывать наши новые OID в своем собственном MIB файле.

Здесь определяется enterptise с номером 10050 и ему даеся имя aliensattack. После этого вводятся две ветки: одна для трапов (начало и конец атаки), другая для OID дополнительной информации (атака через двери или это вовсе не инопланетяне).

Скажу честно, в формате MIB файла я понимаю мало. Поэтому внимательно изучив MIB файлы из стандартной поставки net-snmp, я сделал этот пример который работает, но кристальной ясности во всех его ключевых словах я не достиг.

Дальше! Укладываем этот файл с именем ALLIENSATTACK-MIB.txt в какой нибудь каталог поближе и запоминаем, что с этого момента все программы имеющие отношения к SNMP (snmpd, snmptrapd, snmpinform) мы запускаем с поддержкой этого MIB. Тоесть, к командной строке добавляем параметры

-М каталог/с_файлом -m +ALLIENSATTACK-MIB.

Посылаем автоматически



Протокол SNMP (англ. Simple Network Management Protocol — простой протокол управления сетями) давно зарекомендовал себя как простое и удобное средство сбора информации о работе различных устройств и систем. Агенты SNMP реализованы для множества операционных систем что даёт возможность строить масштабируемые системы мониторинга функционирования инфраструктуры.

К сожалению, штатный агент Windows, несмотря на кажущуюся информативность, ограничен в вариантах доступной информации о работе системы и в особенности сторонних приложений, работающих на сервере. В этой статье описано как получать по SNMP больше данных о работе сервера, в частности значения счётчиков производительности ОС и любые другие данные, которые могут предоставлять приложения работающие на сервере, например количество подключённых пользователей к серверу приложений 1С 8 или любую другую информацию, которую Вы захотите получить.

SNMP Агент Windows позволяет расширить охват данных при помощи подключения дополнительных библиотек, что дает возможность получить доступ к нужным данным. Информацию по написанию таких расширений можно найти в MSDN, но мы воспользуемся одним из готовых, а именно — snmptools. Эта библиотека позволяет передавать информацию полученную из счетчиков произовдительности Windows или результат выполнения консольной программы/скрипта в ответах SNMP агента.

snmptools поддерживает все современные версии Windows, начиная с XP и заканчивая 2008R2 и имеет функционал, достаточный для решения большинства задач по мониторингу.

Качаем архив с библиотекой.В нем лежат:

  • snmptools.dll и snmptools64.dll — собственно библиотеки расширения SNMP Агента. 32-х и 64-х битная версии соответственно
  • counters.sample и traps.sample — файлы с примерами конфигурации
  • .reg файлы с примерами регистрации расширения в системном реестре
  • .reg файлы с примерами регистрации расширения в системном реестре
  • perf32.exe — программка для доступа к значениям счетчиков производительности из командной строки
  • папки с примерами скриптов

Для установки копируем библиотеку нужной архитектуры в системную папку Windows. Рядом создаем ini файл с конфигурацией (по умолчанию предлагается его ложить в корень диска С:). После чего изменяем путь к библиотеке и конфигурации в .reg файле и импортируем ключи в реестр. Вуаля — после перезапуска службы SNMP библиотека будет загружена, и будет возвращать данные описанные в файле конфигурации.

Файл конфигурации представляет собой ini-файл с простой структурой. Заголовок раздела задает обрабатываемый oid. Параметры которых всего 2 — type и counter — указывают какую информацию возвращать.

;
;Скалярные счетчики
;
;Просто текстовая строка
[1.3.6.1.4.1.15.1]
type = string
counter = this is a test

;Значение счетчика производительности
[1.3.6.1.4.1.15.2]
counter = LogicalDisk\Free Megabytes\_Total

;Результат выполнения консольной команды.
[1.3.6.1.4.1.15.3]
type = exec
counter = cmd /c ver

;Результат выполнения VB скрипта
[1.3.6.1.4.1.15.4]
type = exec
counter = cscript /nologo c:\1c_sessions.vbs

;
;Табличные объекты
;
;Индекс
[1.3.6.1.4.1.15.10]
type = string
counter = 2

; Описательные поля
[1.3.6.1.4.1.15.10.1]
type = string
counter = 2
[1.3.6.1.4.1.15.10.1.1]
type = string
counter = Available Bytes
[1.3.6.1.4.1.15.10.1.2]
type = string
counter = Committed Bytes

; Информационные поля
[1.3.6.1.4.1.15.10.2]
type = string
counter = 2
[1.3.6.1.4.1.15.10.2.1]
counter = memory\Available Bytes
[1.3.6.1.4.1.15.10.2.2]
counter = memory\Committed Bytes

;Необходимо указывать конец для корректной работы последовательного обхода с помощью snmp_get_next
[1.3.6.1.4.1.15.9999]
type = string
counter = EOF

И проверим работу:

> snmpwalk - v 2c - c public - O a 192 . 168 . 1 . 1 1 . 3 . 6 . 1 . 4 . 1 . 15
SNMPv2 - SMI :: enterprises . 15 . 1 = STRING: "this is a test"
SNMPv2 - SMI :: enterprises . 15 . 2 = INTEGER: 160922
SNMPv2 - SMI :: enterprises . 15 . 3 = STRING: "Microsoft Windows [. 5.2.3790]"
SNMPv2 - SMI :: enterprises . 15 . 4 = INTEGER: 4
SNMPv2 - SMI :: enterprises . 15 . 10 = INTEGER: 2
SNMPv2 - SMI :: enterprises . 15 . 10 . 2 = INTEGER: 2
SNMPv2 - SMI :: enterprises . 15 . 10 . 2 . 1 = STRING: "Available Bytes"
SNMPv2 - SMI :: enterprises . 15 . 10 . 2 . 2 = STRING: "Committed Bytes"
SNMPv2 - SMI :: enterprises . 15 . 10 . 3 = INTEGER: 2
SNMPv2 - SMI :: enterprises . 15 . 10 . 3 . 1 = INTEGER: 427024384
SNMPv2 - SMI :: enterprises . 15 . 10 . 3 . 2 = INTEGER: 522661888
SNMPv2 - SMI :: enterprises . 15 . 9999 = STRING: "EOF"
End of MIB

Также можно настроить отправку трапов. Для этого нужно в настройках SNMP Агента Windows указать адрес получателя трапов, и в реестре в ветке HKEY_LOCAL_MACHINE\SOFTWARE\snmptools\currentversion создать строковой параметр traps с путем к файлу конфигурации трапов. Опционально можно добавить параметр trap_delay типа DWord для указания периодичности отправки трапов в миллисекундах.

Как видим snmptools это простой и удобный инструмент который может немного помочь в контроле увеличения энтропии вселенной и селекции зеленых хомячков.;-)

Если же Вам недостаточно функциональности предоставляемой snmptools, например требуются расширенные возможности протокола SNMP, типа управления сервером — можете попробовать использовать более продвинутые аналоги например, SNMPInformant

И в дополнение пример скрипта на VBScript для получения количества подключенных пользователей к серверу приложений 1Сv82.

Читайте также: