因爲顯然你正在使用Windows操作系統與SNMP的工作,那麼你需要爲了在添加自定義SNMP的OID和相應的陷阱,來創建自定義SNMP擴展代理您的系統。每個OID都會提供一個可以存儲信息的變量。 Here is an example of such DLL。據我所知,MIB文件僅在Windows中用作SNMP代理的參考,不能用於在不創建自定義SNMP代理的情況下添加新的OID。
當您擁有自定義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。
下面是示例代碼使用LIB:
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
}
...
你也可以閱讀文章關於Windows操作系統與SNMP工作TechNet上:link。本文不是新的,但可以幫助您瞭解如何在Windows中使用SNMP。
如果是這樣,那麼如何定義SNMP陷阱的格式('數據字段')? – Tom 2012-02-08 15:12:30