2016-08-15 9 views
1

私はsnmp4jで取得しましたが、今はトラップ受信モジュールを実装するためにwesthawk snmpスタックライブラリを使用しています。このライブラリを使用していますsampleトラップを受け取るのにこのコードを受け取りますトラップをrawPduとしてトラップし、コードを編集しても何もしない場合はどうしたらいいですか? ここに私のコードです:westhawk snmpスタックでトラップを受信

package snmp4j; 

import java.util.*; 
import uk.co.westhawk.snmp.stack.*;  
import uk.co.westhawk.snmp.event.*;  
import uk.co.westhawk.snmp.util.*;  

public class SnmpTrackTrapReceiver implements TrapListener, Observer 
{ 
    private SnmpContext context; 

public void init() 
{ 

    String host = "localhost"; 
    int port = 162 ; 
    String community = "public" ; 
    try 
    { 
     context = new SnmpContextv2c(host, port); 
     context.setCommunity(community); 
     context.addTrapListener(this); 
    } 
    catch (java.io.IOException exc) 
    { 
     System.out.println("ReceiveTrap.init(): IOException " 
      + exc.getMessage() + "\n" + exc); 
     exc.printStackTrace() ; 
     System.exit(0); 
    } 
} 

public void trapReceived(TrapEvent evt) 
{ 
    int port = evt.getHostPort(); 
    Pdu trapPdu = evt.getPdu(); 
    int reqId = trapPdu.getReqId(); 
    SnmpContextBasisFace rcontext = trapPdu.getContext(); 
    int version = rcontext.getVersion(); 
    String host = rcontext.getHost(); 

    System.out.println("\ttrap id " + reqId 
     + ", v " + SnmpUtilities.getSnmpVersionString(version) 
     + " from host " + host 
     + ", sent from port " + port); 
    System.out.println("\ttrap " + trapPdu.toString()); 
} 
} 

答えて

0

基本的にあなたがトラップPDUを反復処理することができますが、次のコードを使用して変数バインド:

varbind[] varbinds = trapPdu.getResponseVarbinds(); 

for (varbind var: varbinds) { 
    System.out.println("OID: ", var.getOid().toString()); 
    System.out.println("Value: ", var.getValue().toString()); 
} 
+0

私の問題は、コードであるあなたがレシーブトラップされ、trapEventとして任意のイベントを受け取るありませんでしたか? –

+0

すべてのSNMPバージョン(v1、v2c、v3)のコンテキストが設定されていることを確認してください。したがって、すべてのタイプの着信トラップPDUを処理できます。 –

+0

これを修正しましたが、残念ながらNothingは変更されていません。私は今どうすればいい ? –

関連する問題