4

だから私はまだSNMPを学んでいる途中です。ライブラリだけでなくsnmp4jを使用していますが、ソースコードをロードしました。必要なものが得られれば、ソースを変更することに反対しません。エージェントとテスト クライアントをプログラムしました。私がやりたいことは、テスト クライアントからのリクエストを確認し、具体的には特定の OID への「設定」リクエストをリッスンできるようにすることです。

fireProcessMessage私が考えている現在の方法は、snmp4j メソッド(パッケージ内にあります) を実行した直後にリクエストをキャッチすることですがorg.snmp4j.transport.DefaultUdpTranportMapping、エージェントが独自の mib に oid を照会する方法がわかりません。エージェントが mib から OID 値を取得するために使用する方法はありますか?

または、特定のSET要求をキャッチするより良い方法はありますか? 私がやりたいことをすることさえ可能ですか?基本的に私がやりたいことは、クライアントが特定の OID 値を 1(true) に設定した場合に別のプロセスを実行することです。

4

2 に答える 2

11

CommandProcessorを拡張し、RequestHandler を実装することで実行できます。

私がしたように

public class SNMPRequestProcessor extends CommandProcessor
{

SetHandler setHandler = new SetHandler ();

public SNMPRequestProcessor()
{
    //Your code
}


@Override
protected void processRequest(CommandResponderEvent command, CoexistenceInfo cinfo, RequestHandler handler)
{

    synchronized (command) {
        if (command.getPDU().getType() == PDU.SET) {
            super.processRequest(command, cinfo, setHandler);
        }

        super.processRequest(command, cinfo, handler);
    }

}

/**
 * Handler for process set request which update to the database
 * 
 */

class SetHandler implements RequestHandler
{

    @Override
    public boolean isSupported(int mode)
    {
        return mode == PDU.SET;
    }

    @Override
    public void processPdu(Request request, MOServer server)
    {
                 //your code
    }
}

}
于 2013-02-11T12:35:07.687 に答える
0

snmp4j のエージェント側の経験はありませんが、公式のメーリング リストhttp://lists.agentpp.org/pipermail/snmp4j/でこの質問をすることをお勧めします。かなりアクティブです。数時間以内に適切な回答が得られます。

于 2011-08-06T00:08:17.500 に答える