どうやら Windows OS を使用して SNMP を操作しているため、カスタム SNMP OID と対応するトラップをシステムに追加するには、カスタム SNMP 拡張エージェントを作成する必要があります。各 OID は文字通り、情報を格納できる変数を表します。このような 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
}
...
また、technet の Windows OS での SNMP の使用に関する記事を読むことができます:リンク。この記事は新しいものではありませんが、Windows で SNMP を使用する方法を理解するのに役立つかもしれません。