Поскольку вы, очевидно, используете ОС 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.