2012-01-27 12 views
6

私はC#の.netの下にある会社のための特別なアプリケーションを開発しました。今開発されている主な新機能の1つは、アラート状況でSNMPトラップを送信して別のソフトウェアと統合することです。MIBの定義と.netの下のSNMPトラップの送信

私は経験豊かな開発者ですが、私はこれまでSNMPを使用していません。私は一日中グーグルで探検しましたが、このトピックについてはますます混乱しました。私は明確な「出発点」を持っていません。私はSNMPの基本を理解していますが、どこでどのように実装を開始するのか分かりません。

私はSNMPトラップを介して送信する必要があるデータを持っています。いくつかのプロパティ、日付、数字、文字列があります。このプロパティでMIB定義を作成する必要があります。後で、このMIBに基づいてSNMPトラップを送信する機能をアプリケーションに実装する必要があります。

プロジェクトは、C#で.net 4で開発されました。私は有望なこのライブラリを見つけました:http://sharpsnmplib.codeplex.com/ SNMPトラップの送信に関するいくつかのサンプルがあります。

私の問題は次のとおりです。 MIBファイルはどのように定義できますか?コンパイルが必要なテキストファイルだが、MIBエディタを見つけられず、このトピックについて助けてくれたことは分かっている。

ご協力いただきましてありがとうございます。

ありがとうございます!

答えて

3

私は専門家ではありませんが、あなたと同じ場所にいる経験があり、最終的に私のプロジェクトに十分なものを見つけました。

あなたが以前に参照したこのコードプレックスライブラリを使用して、かなり良いとわかりました。ここにあなたがhttp://sharpsnmplib.codeplex.com/を通過するためのいくつかの指針があります。

  • 限り、あなたがsnmpgetコマンドを行うとのsnmpsetする必要があるときに私の理解が必要とされるMIBファイルを行くよう
    • これは、サーバーと、より詳細を求めて戻ってあなたのクライアントに来てサーバーに通知しますの一種でありますアプリについて共有することが
  • を豊富な情報が必要な場合は、あなたが必要とするすべてはただのトラップである場合、あなたはこの
    • は、SNMPのように動作しますsnmpd.exeを実行して行うことができます情報、および必要な場合がありますサーバ受信gトラップをアプリケーションから送信します。
    • snmptrapd.exeと似たプログラムを作成し、トラップを送信してください。

リンクhttp://www.net-snmp.org/wiki/index.php/TUT:snmptrapは、基本的な理解を取得し、より多くのライブラリ情報を取得のために良いものです。

編集:ちょうど1ポイントを逃した。 snmpにgetとsetを使用する場合はMIBファイルが必要です。あなたが持っているものがすべてトラップであれば、必要ないかもしれません。

+1

もしそうなら、どのようにしてSNMPトラップのフォーマット( 'データフィールド')を定義できますか? – Tom

0

また、snmpsharpnetで試すことができます。これは、.NET上でSNMPを再生するのに非常に役立ちますか?

私はMG-SOFT MIB Browserを使用するMIBエディタとして、プロフェッショナル版はVisual MIB Builder for Windowsで販売されています。

1

明らかに、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 Browserlink

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を使用する方法を理解するのに役立ちます。

+0

"カスタムSNMP拡張エージェントを作成する必要があります"。これは15年前に本当だった(私は最後の任意のSNMPプログラミングをしたとき)が、(それが今、十年以上古いですが)あなたは今、新しいのWinSNMPのAPIからSnmpSendMsgを使用してトラップを送信することができます。ここでは例:http://stackoverflow.com/questions/4498618/problem-sending-snmp-trap-and-manager-recognizing-it – arx

1

トラップを送信するだけでよい場合は、MIBを定義する必要はありません。 MIBは他の当事者がその中の変数の意味を理解するためのものです。テキストファイルなどの他の形式を使用して文書化することができます。

トラップを送信するためには、C#SNMPライブラリを利用する、あるいは単に直接SNMPTRAPプログラムを呼び出すことができます。 Net-snmpは、トラップを送信するための無料のコマンドラインツールを提供します。 ( http://net-snmp.sf.net)。その使用法はかなりシンプルです。トラップが正常に送り出されてきた場合、あなたがそれらを受け取るために自由ireasoningのMIBブラウザ( http://ireasoning.com/mibbrowser.shtml)を使用できることを確認するには

。それが受信できれば、通常あなたのトラップが正常であることを意味します。

1

だからhttp://www.net-snmp.org/tutorial/tutorial-5/commands/snmptrap.html

SNMPv2の通知

からSNMPv2の通知の形式は多少異なっています。 MIBファイルの定義は次のようになります

NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN 
     IMPORTS ucdavis FROM UCD-SNMP-MIB; 

demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 } 

demo-notif NOTIFICATION-TYPE 
    STATUS current 
     OBJECTS { sysLocation } 
    DESCRIPTION "Just a test notification" 
     ::= { demonotifs 17 } 

END 
関連する問題