Определите MIB и отправьте SNMP-ловушку под .net - PullRequest
7 голосов
/ 28 января 2012

Я разработал специальное приложение для компании под .net на C #, и оно используется годами. Теперь, когда он разработан, одна из основных новых функций, которые я должен реализовать, - это интеграция его с другим программным обеспечением, посылая ему ловушки SNMP в некоторых ситуациях оповещения.

Я опытный разработчик, но я никогда не использовал SNMP. Я гуглил весь день, но все больше и больше путался по этой теме. У меня нет четкой «отправной точки». Я понимаю основы SNMP, но не знаю, где и как начать реализацию.

У меня есть данные, которые я должен отправить через SNMP-ловушку, у него есть около 10 свойств, некоторые даты, числа и строки. Я должен создать MIB определение (я) по этим свойствам. Позже я должен реализовать функцию в своем приложении, которая отправляет SNMP-ловушки на основе этих MIB.

Проект разработан под .net 4 в c #. Я нашел эту библиотеку, которая кажется многообещающей: http://sharpsnmplib.codeplex.com/ В нем есть пример отправки SNMP-ловушек.

Моя проблема: с чего начать? Как я могу определить файлы MIB? Я знаю, что это некоторые текстовые файлы, которые должны быть скомпилированы, но я не нашел редакторов MIB и справки по этой теме.

Любая помощь приветствуется!

Спасибо!

Ответы [ 6 ]

3 голосов
/ 28 января 2012

Я не эксперт, но у меня есть опыт нахождения в том же месте, что и вы, и, наконец, я нашел что-то достаточно для моего проекта.

Я использовал эту библиотеку кодплексов, на которую вы ссылались ранее, и нашел ее довольно хорошей,Вот несколько советов для вас, чтобы пройти через http://sharpsnmplib.codeplex.com/.

  • Насколько я понимаю, MIB-файл необходим, когда вам нужно сделать snmpget и snmpset
    • Это своего рода информация о том, что сервер и сервер возвращаются к вашему клиенту с просьбой предоставить более подробную информацию, и могут потребоваться, если вам требуется предоставить обширную информацию о вашем приложении
  • Если вам нужны только ловушки, вы можете сделать это
    • Запустить snmpd.exe, который будет действовать как сервер snmp, получающий ловушки, отправленные из вашего приложения.
    • Напишите программу, аналогичную snmptrapd.exe и отправьте ваши ловушки.

Ссылка http://www.net -snmp.org / wiki / index.php / TUT: snmptrap хорошаядля получения базовых знаний и получения дополнительной информации о библиотеке.

Редактировать: Просто пропустил одно очко.Вам понадобится файл MIB, если вы используете get и set для snmp.Если у вас есть только ловушки, она вам может не понадобиться.

1 голос
/ 26 октября 2015

Итак, из http://www.net -snmp.org / tutorial / tutorial-5 / commands / snmptrap.html

Уведомление SNMPv2

Формат уведомления SNMPv2 несколько отличается. Определение в файле MIB выглядит следующим образом

NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN
        IMPORTS ucdavis FROM UCD-SNMP-MIB;

demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 }

demo-notif NOTIFICATION-TYPE
    STATUS current
        OBJECTS { sysLocation }
    DESCRIPTION "Just a test notification"
        ::= { demonotifs 17 }

END
1 голос
/ 08 февраля 2012

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

Для отправки прерываний вы можете использовать библиотеку SNMP C # или просто вызвать программу snmptrap напрямую. Net-snmp предоставляет бесплатные инструменты командной строки для отправки ловушек. (http://net -snmp.sf.net ). Его использование довольно просто.

Чтобы убедиться, что ловушки были успешно отправлены, вы можете использовать бесплатный браузер MIB (http://ireasoning.com/mibbrowser.shtml) для их получения. Если его можно получить, это обычно означает, что с вашими ловушками все в порядке.

1 голос
/ 07 февраля 2012

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

Когда у вас будет пользовательская DLL-библиотека агента SNMP, вам нужно указать ее в реестре. Можно сделать так (пример):

[HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\MyAgent\CurrentVersion]
"Pathname"="C:\\MyCustomAgent\\MyAgent.dll"

;Add number of agent to the list (max num registered + 1)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents]
"10"="SOFTWARE\\Symbol\\MyAgent\\CurrentVersion"

После этого вам необходимо перезапустить службу SNMP. Если все правильно, вы сможете использовать свой новый OID для установки \ получения некоторых данных.

Чтобы читать \ записывать переменные SNMP, вам нужно использовать менеджер SNMP. Я обычно использую Sharpsnmplib для этого. Есть также менеджеры GUI, которые будут полезны во время процесса отладки, например: iReasoning MIB Browser .

Вот пример кода для использования этой библиотеки:

using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
// SNMP Lib references
using Lextm.SharpSnmpLib;
using Mono.Options;
using Lextm.SharpSnmpLib.Messaging;
using Lextm.SharpSnmpLib.Security;
...
List vList = new List();
ISnmpData data;
data = new OctetString("test"); // variable to add in to string OID
Variable test = new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.6.0"), data); // OID
vList.Add(test);
VersionCode versionH = VersionCode.V2; // SNMP protocol version to use
IPAddress ipH;
IPAddress.TryParse("127.0.0.1", out ipH);
IPEndPoint receiverH = new IPEndPoint(ipH, 161);
foreach (Variable variable in
        Messenger.Set(versionH, receiverH, new OctetString("private"), vList, 10))// set variable
        // Arguments: (ver of SNMP, IP, group, iList containing OID and variable, timeoout)
        {
            // output variable
        }
...

Также вы можете прочитать статью о работе с SNMP в ОС Windows на technet: ссылка . Эта статья не нова, но может помочь вам понять, как работать с SNMP в Windows.

1 голос
/ 05 февраля 2012

В MIB SNMP V2 прерывания описываются как УВЕДОМЛЕНИЕ. Смотрите полный пример такого MIB здесь: http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-EPM-NOTIFICATION-MIB

0 голосов
/ 01 февраля 2012

Вы также можете попробовать с snmpsharpnet , что очень полезно для игры с SNMP поверх .NET?

В качестве редактора MIB я использую MG-SOFT MIB Browser , профессиональное издание продается вместе с Visual MIB Builder для Windows.

...