Search in sources :

Example 6 with Snmp

use of org.snmp4j.Snmp in project opennms by OpenNMS.

the class MockAgentTest method testWalkSystem.

public void testWalkSystem() throws IOException {
    Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
    TableUtils walker = new TableUtils(snmp, new DefaultPDUFactory());
    snmp.listen();
    Address addr = new UdpAddress(InetAddress.getLocalHost(), 9161);
    //Address addr = new UdpAddress(InetAddressUtils.addr("192.168.0.100"), 161);
    Target target = new CommunityTarget(addr, new OctetString("public"));
    target.setVersion(SnmpConstants.version1);
    target.setTimeout(3000);
    target.setRetries(3);
    // Implements snmp4j API
    @SuppressWarnings("rawtypes") List results = walker.getTable(target, new OID[] { new OID("1.3.6.1.2.1.1") }, null, null);
    assertNotNull(results);
    assertFalse(results.isEmpty());
    assertTrue(results.get(results.size() - 1) instanceof TableEvent);
    TableEvent lastEvent = (TableEvent) results.get(results.size() - 1);
    MockUtil.println("Status of lastEvent is " + lastEvent.getStatus());
    assertEquals(TableEvent.STATUS_OK, lastEvent.getStatus());
}
Also used : OctetString(org.snmp4j.smi.OctetString) UdpAddress(org.snmp4j.smi.UdpAddress) Address(org.snmp4j.smi.Address) UdpAddress(org.snmp4j.smi.UdpAddress) InetAddress(java.net.InetAddress) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) OID(org.snmp4j.smi.OID) Target(org.snmp4j.Target) CommunityTarget(org.snmp4j.CommunityTarget) DefaultPDUFactory(org.snmp4j.util.DefaultPDUFactory) TableEvent(org.snmp4j.util.TableEvent) Snmp(org.snmp4j.Snmp) List(java.util.List) TableUtils(org.snmp4j.util.TableUtils) CommunityTarget(org.snmp4j.CommunityTarget)

Example 7 with Snmp

use of org.snmp4j.Snmp in project openhab1-addons by openhab.

the class SnmpBinding method listen.

/**
     * Configures a {@link DefaultUdpTransportMapping} and starts listening on
     * <code>SnmpBinding.port</code> for incoming SNMP Traps.
     */
private void listen() {
    UdpAddress address = new UdpAddress(SnmpBinding.port);
    try {
        if (transport != null) {
            transport.close();
            transport = null;
        }
        if (snmp != null) {
            snmp.close();
            snmp = null;
        }
        transport = new DefaultUdpTransportMapping(address);
        // add all security protocols
        SecurityProtocols.getInstance().addDefaultProtocols();
        SecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());
        // Create Target
        if (SnmpBinding.community != null) {
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString(SnmpBinding.community));
        }
        snmp = new Snmp(transport);
        transport.listen();
        logger.debug("SNMP binding is listening on " + address);
    } catch (IOException ioe) {
        logger.error("SNMP binding couldn't listen to " + address, ioe);
    }
}
Also used : OctetString(org.snmp4j.smi.OctetString) UdpAddress(org.snmp4j.smi.UdpAddress) Priv3DES(org.snmp4j.security.Priv3DES) Snmp(org.snmp4j.Snmp) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) IOException(java.io.IOException) CommunityTarget(org.snmp4j.CommunityTarget)

Example 8 with Snmp

use of org.snmp4j.Snmp in project camel by apache.

the class SnmpOIDPoller method onResponse.

public void onResponse(ResponseEvent event) {
    // Always cancel async request when response has been received
    // otherwise a memory leak is created! Not canceling a request
    // immediately can be useful when sending a request to a broadcast address.
    ((Snmp) event.getSource()).cancel(event.getRequest(), this);
    // check for valid response
    if (event.getRequest() == null || event.getResponse() == null) {
        // ignore null requests/responses
        LOG.debug("Received invalid SNMP event. Request: " + event.getRequest() + " / Response: " + event.getResponse());
        return;
    }
    PDU pdu = event.getResponse();
    processPDU(pdu);
}
Also used : ScopedPDU(org.snmp4j.ScopedPDU) PDU(org.snmp4j.PDU) Snmp(org.snmp4j.Snmp)

Example 9 with Snmp

use of org.snmp4j.Snmp in project camel by apache.

the class SnmpOIDPoller method doStart.

@Override
protected void doStart() throws Exception {
    super.doStart();
    this.targetAddress = GenericAddress.parse(this.endpoint.getAddress());
    // either tcp or udp
    if ("tcp".equals(endpoint.getProtocol())) {
        this.transport = new DefaultTcpTransportMapping();
    } else if ("udp".equals(endpoint.getProtocol())) {
        this.transport = new DefaultUdpTransportMapping();
    } else {
        throw new IllegalArgumentException("Unknown protocol: " + endpoint.getProtocol());
    }
    this.snmp = new Snmp(this.transport);
    if (SnmpConstants.version3 == endpoint.getSnmpVersion()) {
        UserTarget userTarget = new UserTarget();
        userTarget.setSecurityLevel(endpoint.getSecurityLevel());
        userTarget.setSecurityName(convertToOctetString(endpoint.getSecurityName()));
        userTarget.setAddress(targetAddress);
        userTarget.setRetries(endpoint.getRetries());
        userTarget.setTimeout(endpoint.getTimeout());
        userTarget.setVersion(endpoint.getSnmpVersion());
        this.target = userTarget;
        USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
        SecurityModels.getInstance().addSecurityModel(usm);
        OID authProtocol = convertAuthenticationProtocol(endpoint.getAuthenticationProtocol());
        OctetString authPwd = convertToOctetString(endpoint.getAuthenticationPassphrase());
        OID privProtocol = convertPrivacyProtocol(endpoint.getPrivacyProtocol());
        OctetString privPwd = convertToOctetString(endpoint.getPrivacyPassphrase());
        UsmUser user = new UsmUser(convertToOctetString(endpoint.getSecurityName()), authProtocol, authPwd, privProtocol, privPwd);
        usm.addUser(convertToOctetString(endpoint.getSecurityName()), user);
        ScopedPDU scopedPDU = new ScopedPDU();
        if (endpoint.getSnmpContextEngineId() != null) {
            scopedPDU.setContextEngineID(new OctetString(endpoint.getSnmpContextEngineId()));
        }
        if (endpoint.getSnmpContextName() != null) {
            scopedPDU.setContextName(new OctetString(endpoint.getSnmpContextName()));
        }
        this.pdu = scopedPDU;
    } else {
        CommunityTarget communityTarget = new CommunityTarget();
        communityTarget.setCommunity(convertToOctetString(endpoint.getSnmpCommunity()));
        communityTarget.setAddress(targetAddress);
        communityTarget.setRetries(endpoint.getRetries());
        communityTarget.setTimeout(endpoint.getTimeout());
        communityTarget.setVersion(endpoint.getSnmpVersion());
        this.target = communityTarget;
        this.pdu = new PDU();
    }
    // listen to the transport
    if (LOG.isDebugEnabled()) {
        LOG.debug("Starting OID poller on {} using {} protocol", endpoint.getAddress(), endpoint.getProtocol());
    }
    this.transport.listen();
    if (LOG.isInfoEnabled()) {
        LOG.info("Started OID poller on {} using {} protocol", endpoint.getAddress(), endpoint.getProtocol());
    }
}
Also used : OctetString(org.snmp4j.smi.OctetString) ScopedPDU(org.snmp4j.ScopedPDU) PDU(org.snmp4j.PDU) ScopedPDU(org.snmp4j.ScopedPDU) DefaultTcpTransportMapping(org.snmp4j.transport.DefaultTcpTransportMapping) Snmp(org.snmp4j.Snmp) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) OID(org.snmp4j.smi.OID) UserTarget(org.snmp4j.UserTarget) UsmUser(org.snmp4j.security.UsmUser) CommunityTarget(org.snmp4j.CommunityTarget) USM(org.snmp4j.security.USM)

Example 10 with Snmp

use of org.snmp4j.Snmp in project camel by apache.

the class SnmpProducer method process.

@Override
public void process(final Exchange exchange) throws Exception {
    // load connection data only if the endpoint is enabled
    Snmp snmp = null;
    TransportMapping<? extends Address> transport = null;
    try {
        LOG.debug("Starting SNMP producer on {}", this.endpoint.getAddress());
        // either tcp or udp
        if ("tcp".equals(this.endpoint.getProtocol())) {
            transport = new DefaultTcpTransportMapping();
        } else if ("udp".equals(this.endpoint.getProtocol())) {
            transport = new DefaultUdpTransportMapping();
        } else {
            throw new IllegalArgumentException("Unknown protocol: {} " + this.endpoint.getProtocol());
        }
        snmp = new Snmp(transport);
        LOG.debug("Snmp: i am sending");
        snmp.listen();
        ResponseEvent responseEvent = snmp.send(this.pdu, this.target);
        LOG.debug("Snmp: sended");
        if (responseEvent.getResponse() != null) {
            exchange.getIn().setBody(new SnmpMessage(responseEvent.getResponse()));
        } else {
            throw new TimeoutException("SNMP Producer Timeout");
        }
    } finally {
        try {
            transport.close();
        } catch (Exception e) {
        }
        try {
            snmp.close();
        } catch (Exception e) {
        }
    }
}
Also used : DefaultTcpTransportMapping(org.snmp4j.transport.DefaultTcpTransportMapping) Snmp(org.snmp4j.Snmp) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) ResponseEvent(org.snmp4j.event.ResponseEvent) TimeoutException(java.util.concurrent.TimeoutException) TimeoutException(java.util.concurrent.TimeoutException)

Aggregations

Snmp (org.snmp4j.Snmp)21 DefaultUdpTransportMapping (org.snmp4j.transport.DefaultUdpTransportMapping)17 OctetString (org.snmp4j.smi.OctetString)14 UdpAddress (org.snmp4j.smi.UdpAddress)12 PDU (org.snmp4j.PDU)10 ResponseEvent (org.snmp4j.event.ResponseEvent)9 CommunityTarget (org.snmp4j.CommunityTarget)8 ScopedPDU (org.snmp4j.ScopedPDU)8 UsmUser (org.snmp4j.security.UsmUser)7 USM (org.snmp4j.security.USM)6 IOException (java.io.IOException)5 UserTarget (org.snmp4j.UserTarget)4 DefaultTcpTransportMapping (org.snmp4j.transport.DefaultTcpTransportMapping)4 InetAddress (java.net.InetAddress)3 MessageDispatcher (org.snmp4j.MessageDispatcher)3 PDUv1 (org.snmp4j.PDUv1)3 Address (org.snmp4j.smi.Address)3 OID (org.snmp4j.smi.OID)3 MessageDispatcherImpl (org.snmp4j.MessageDispatcherImpl)2 Target (org.snmp4j.Target)2