明らかに、Windows OSを使用してSNMPを使用しているので、カスタムSNMP拡張エージェントを作成して、カスタムSNMP OIDと対応するトラップを追加する必要がありますシステム。各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。 link:
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での作業についての記事を読むことができます:ここで
は、libのことを使用するためのサンプルコードです。この記事は新しいものではありませんが、WindowsでSNMPを使用する方法を理解するのに役立ちます。
もしそうなら、どのようにしてSNMPトラップのフォーマット( 'データフィールド')を定義できますか? – Tom