Проверка запросов, поступающих через SNMP - PullRequest
4 голосов
/ 03 августа 2011

Итак, я все еще изучаю SNMP, пожалуйста, будьте спокойны. Я использую snmp4j, не только библиотеки, но я загрузил исходный код, и я не против изменения исходного кода, если он даст мне то, что мне нужно. Я запрограммировал агента и тестового клиента. То, что я хочу сделать, это иметь возможность проверять запросы, поступающие от тестового клиента и, в частности, прослушивать «установленный» запрос к определенному OID.

В настоящее время я думаю об этом: перехватить запрос сразу после запуска метода snmp4j fireProcessMessage (находится в пакете org.snmp4j.transport.DefaultUdpTranportMapping), но я не знаю, как агент запрашивает свой собственный MIB oid. Есть ли метод, который агент использует для получения значений OID из своего MIB?

Или Есть ли лучший способ отловить конкретный SET запрос? Можно ли вообще делать то, что я хочу? По сути, я хочу запустить другой процесс, если клиент устанавливает для определенного значения OID значение 1 (true).

Ответы [ 2 ]

11 голосов
/ 11 февраля 2013

Это может быть сделано путем расширения 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
    }
}

}
0 голосов
/ 06 августа 2011

У меня нет опыта работы с агентом на стороне snmp4j, но я рекомендую поставить этот вопрос в официальном списке рассылки: http://lists.agentpp.org/pipermail/snmp4j/. Это довольно активно, у вас будет хороший ответ через несколько часов.

...