看起来你正在使用Windows操作系统来处理SNMP,那么你需要创建自定义的SNMP扩展代理以添加自定义的SNMP OID和相应的陷阱到你的系统中。每个OID都会实际上呈现一个变量,你可以在其中存储你的信息。这里是这样的DLL的示例。据我所知,MIB文件仅用作Windows中SNMP代理的参考,不能用于添加新的OID而不创建自定义的SNMP代理。
当你拥有自己的自定义SNMP代理DLL时,你需要在注册表中指向它。可以像这样完成(示例):
[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;
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 test = new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.6.0"), data);
vList.Add(test);
VersionCode versionH = VersionCode.V2;
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))
{
}
...
另外,你可以在Technet上阅读有关在Windows操作系统中使用SNMP的文章:link。这篇文章并不新,但可能会帮助你了解如何在Windows中使用SNMP。