Search in sources :

Example 16 with USM

use of org.snmp4j.security.USM in project LogHub by fbacchella.

the class SNMPTrapGeneratorClient2 method sendSnmpV3Trap.

/**
 * Sends the v3 trap
 */
private static void sendSnmpV3Trap() {
    try {
        Address targetAddress = GenericAddress.parse("udp:" + ipAddress + "/" + port);
        TransportMapping<?> transport = new DefaultUdpTransportMapping();
        Snmp snmp = new Snmp(transport);
        USM usm = new USM(SecurityProtocols.getInstance().addDefaultProtocols(), new OctetString(MPv3.createLocalEngineID()), 0);
        SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES192());
        SecurityModels.getInstance().addSecurityModel(usm);
        transport.listen();
        snmp.getUSM().addUser(new OctetString("MD5DES"), new UsmUser(new OctetString("MD5DES"), AuthMD5.ID, new OctetString("UserName"), PrivAES128.ID, new OctetString("UserName")));
        // Create Target
        UserTarget target = new UserTarget();
        target.setAddress(targetAddress);
        target.setRetries(1);
        target.setTimeout(11500);
        target.setVersion(SnmpConstants.version3);
        target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
        target.setSecurityName(new OctetString("MD5DES"));
        // Create PDU for V3
        ScopedPDU pdu = new ScopedPDU();
        pdu.setType(ScopedPDU.NOTIFICATION);
        pdu.add(new VariableBinding(SnmpConstants.sysUpTime));
        pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, SnmpConstants.linkDown));
        pdu.add(new VariableBinding(new OID(trapOid), new OctetString("Major")));
        // Send the PDU
        snmp.send(pdu, target);
        System.out.println("Sending Trap to (IP:Port)=> " + ipAddress + ":" + port);
        snmp.addCommandResponder(new CommandResponder() {

            public void processPdu(CommandResponderEvent arg0) {
                System.out.println(arg0);
            }
        });
        snmp.close();
    } catch (Exception e) {
        System.err.println("Error in Sending Trap to (IP:Port)=> " + ipAddress + ":" + port);
        System.err.println("Exception Message = " + e.getMessage());
    }
}
Also used : OctetString(org.snmp4j.smi.OctetString) Address(org.snmp4j.smi.Address) IpAddress(org.snmp4j.smi.IpAddress) UdpAddress(org.snmp4j.smi.UdpAddress) GenericAddress(org.snmp4j.smi.GenericAddress) ScopedPDU(org.snmp4j.ScopedPDU) CommandResponderEvent(org.snmp4j.CommandResponderEvent) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) OID(org.snmp4j.smi.OID) UsmUser(org.snmp4j.security.UsmUser) USM(org.snmp4j.security.USM) PrivAES192(org.snmp4j.security.PrivAES192) Snmp(org.snmp4j.Snmp) UserTarget(org.snmp4j.UserTarget) VariableBinding(org.snmp4j.smi.VariableBinding) CommandResponder(org.snmp4j.CommandResponder)

Example 17 with USM

use of org.snmp4j.security.USM in project pentaho-kettle by pentaho.

the class JobEntrySNMPTrap method execute.

public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    result.setNrErrors(1);
    result.setResult(false);
    String servername = environmentSubstitute(serverName);
    int nrPort = Const.toInt(environmentSubstitute("" + port), DEFAULT_PORT);
    String Oid = environmentSubstitute(oid);
    int timeOut = Const.toInt(environmentSubstitute("" + timeout), DEFAULT_TIME_OUT);
    int retry = Const.toInt(environmentSubstitute("" + nrretry), 1);
    String messageString = environmentSubstitute(message);
    Snmp snmp = null;
    try {
        TransportMapping transMap = new DefaultUdpTransportMapping();
        snmp = new Snmp(transMap);
        UdpAddress udpAddress = new UdpAddress(InetAddress.getByName(servername), nrPort);
        ResponseEvent response = null;
        if (targettype.equals(target_type_Code[0])) {
            // Community target
            String community = environmentSubstitute(comString);
            CommunityTarget target = new CommunityTarget();
            PDUv1 pdu1 = new PDUv1();
            transMap.listen();
            target.setCommunity(new OctetString(community));
            target.setVersion(SnmpConstants.version1);
            target.setAddress(udpAddress);
            if (target.getAddress().isValid()) {
                if (log.isDebug()) {
                    logDebug("Valid IP address");
                }
            } else {
                throw new KettleException("Invalid IP address");
            }
            target.setRetries(retry);
            target.setTimeout(timeOut);
            // create the PDU
            pdu1.setGenericTrap(6);
            pdu1.setSpecificTrap(PDUv1.ENTERPRISE_SPECIFIC);
            pdu1.setEnterprise(new OID(Oid));
            pdu1.add(new VariableBinding(new OID(Oid), new OctetString(messageString)));
            response = snmp.send(pdu1, target);
        } else {
            // User target
            String userName = environmentSubstitute(user);
            String passPhrase = environmentSubstitute(passphrase);
            String engineID = environmentSubstitute(engineid);
            UserTarget usertarget = new UserTarget();
            transMap.listen();
            usertarget.setAddress(udpAddress);
            if (usertarget.getAddress().isValid()) {
                if (log.isDebug()) {
                    logDebug("Valid IP address");
                }
            } else {
                throw new KettleException("Invalid IP address");
            }
            usertarget.setRetries(retry);
            usertarget.setTimeout(timeOut);
            usertarget.setVersion(SnmpConstants.version3);
            usertarget.setSecurityLevel(SecurityLevel.AUTH_PRIV);
            usertarget.setSecurityName(new OctetString("MD5DES"));
            // Since we are using SNMPv3 we use authenticated users
            // this is handled by the UsmUser and USM class
            UsmUser uu = new UsmUser(new OctetString(userName), AuthMD5.ID, new OctetString(passPhrase), PrivDES.ID, new OctetString(passPhrase));
            USM usm = snmp.getUSM();
            if (usm == null) {
                throw new KettleException("Null Usm");
            } else {
                usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
                usm.addUser(new OctetString(userName), uu);
                if (log.isDebug()) {
                    logDebug("Valid Usm");
                }
            }
            // create the PDU
            ScopedPDU pdu = new ScopedPDU();
            pdu.add(new VariableBinding(new OID(Oid), new OctetString(messageString)));
            pdu.setType(PDU.TRAP);
            if (!Utils.isEmpty(engineID)) {
                pdu.setContextEngineID(new OctetString(engineID));
            }
            // send the PDU
            response = snmp.send(pdu, usertarget);
        }
        if (response != null) {
            if (log.isDebug()) {
                logDebug("Received response from: " + response.getPeerAddress() + response.toString());
            }
        }
        result.setNrErrors(0);
        result.setResult(true);
    } catch (Exception e) {
        logError(BaseMessages.getString(PKG, "JobEntrySNMPTrap.ErrorGetting", e.getMessage()));
    } finally {
        try {
            if (snmp != null) {
                snmp.close();
            }
        } catch (Exception e) {
        /* Ignore */
        }
    }
    return result;
}
Also used : OctetString(org.snmp4j.smi.OctetString) KettleException(org.pentaho.di.core.exception.KettleException) UdpAddress(org.snmp4j.smi.UdpAddress) ScopedPDU(org.snmp4j.ScopedPDU) TransportMapping(org.snmp4j.TransportMapping) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) DefaultUdpTransportMapping(org.snmp4j.transport.DefaultUdpTransportMapping) OctetString(org.snmp4j.smi.OctetString) OID(org.snmp4j.smi.OID) UsmUser(org.snmp4j.security.UsmUser) USM(org.snmp4j.security.USM) KettleException(org.pentaho.di.core.exception.KettleException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) KettleXMLException(org.pentaho.di.core.exception.KettleXMLException) Result(org.pentaho.di.core.Result) Snmp(org.snmp4j.Snmp) ResponseEvent(org.snmp4j.event.ResponseEvent) PDUv1(org.snmp4j.PDUv1) UserTarget(org.snmp4j.UserTarget) CommunityTarget(org.snmp4j.CommunityTarget) VariableBinding(org.snmp4j.smi.VariableBinding)

Aggregations

USM (org.snmp4j.security.USM)17 OctetString (org.snmp4j.smi.OctetString)14 DefaultUdpTransportMapping (org.snmp4j.transport.DefaultUdpTransportMapping)10 Snmp (org.snmp4j.Snmp)9 UsmUser (org.snmp4j.security.UsmUser)7 ScopedPDU (org.snmp4j.ScopedPDU)6 UserTarget (org.snmp4j.UserTarget)6 PDU (org.snmp4j.PDU)5 UdpAddress (org.snmp4j.smi.UdpAddress)5 CommunityTarget (org.snmp4j.CommunityTarget)4 ResponseEvent (org.snmp4j.event.ResponseEvent)4 OID (org.snmp4j.smi.OID)4 IOException (java.io.IOException)3 Before (org.junit.Before)3 VariableBinding (org.snmp4j.smi.VariableBinding)3 MessageDispatcherImpl (org.snmp4j.MessageDispatcherImpl)2 TransportMapping (org.snmp4j.TransportMapping)2 MPv1 (org.snmp4j.mp.MPv1)2 MPv2c (org.snmp4j.mp.MPv2c)2 MPv3 (org.snmp4j.mp.MPv3)2