VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • snmp4j发送v3trap

最近在做snmp的trapV3模拟发送,网上看到的大多数博客没有太详细的介绍,自己瞎摸索了一下

 

NoAuthNoPriv方式就像名称一样,无验证也无加密
复制代码
      public void sendSnmpV3WithNoAuthNoPriv(Snmp snmp, Address targetAddr) {
        SNMP4JSettings.setExtensibilityEnabled(true);
        SecurityProtocols.getInstance().addDefaultProtocols();

        UserTarget userTarget = new UserTarget();
        DefaultUdpTransportMapping udpTransportMap = null;
        try {
            udpTransportMap = new DefaultUdpTransportMapping();
        }catch (Exception e) {
            e.printStackTrace();
        }
        //engingId可用于进一步做trap的细分和验证,接收时可以不验证
        byte[] enginId = MPv3.createLocalEngineID();
        USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500);
        SecurityModels securityModels = SecurityModels.getInstance();
        securityModels.addSecurityModel(v3Usm);
        userTarget.setRetries(2);
        userTarget.setTimeout(3000);
        userTarget.setVersion(SnmpConstants.version3);
        userTarget.setSecurityLevel(SecurityLevel.NOAUTH_NOPRIV);
        userTarget.setAddress(targetAddr);
        //NOAUTH_NOPRIV和v1,v2c类似,可以直接接收,不验证SecurityName
        //userTarget.setSecurityName(new OctetString("snmpV3TestUser"));
        ScopedPDU v3pdu = new ScopedPDU();
        v3pdu.add(new VariableBinding(SnmpConstants.sysDescr,new   OctetString("what's wrong中文测试!")));

        snmp.setLocalEngine(enginId, 500, 1);
        try {
            ResponseEvent response = snmp.send(v3pdu, userTarget);
            if (response.getRequest() == null) {
                // request timed out
                System.out.println("no response");
            } else {
                System.out.println("Received   response   from:   "
                        + response.getSource());
                // dump response PDU
                System.out.println(response.getRequest().toString());

                //显示发送的信息状态。
            }
        }catch (Exception e) {
            e.printStackTrace();
        }        
复制代码
 
AUTH_NOPRIV会验证SecurityName,authenticationPass,对于privacyPassp的正确性不会验证
复制代码
public void sendSnmpV3WithAuthAndPriv(Snmp snmp, Address targetAddr) {
        OctetString securityName = new OctetString("securityName");
        OctetString passWord = new OctetString("snmpV3TestPassword");
        OctetString privStr = new OctetString("snmpV3TestPriv");
        SNMP4JSettings.setExtensibilityEnabled(true);
        byte[] enginId = "TEO_ID".getBytes();
        USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500);

        SecurityProtocols.getInstance().addDefaultProtocols();

        UserTarget userTarget = new UserTarget();
        userTarget.setVersion(SnmpConstants.version3);
        userTarget.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);
        userTarget.setAddress(targetAddr);
        userTarget.setSecurityName(securityName);
        userTarget.setRetries(2);
        userTarget.setTimeout(3000);
        SecurityModels securityModels = SecurityModels.getInstance();
        securityModels.addSecurityModel(v3Usm);
     //此处五个参数分别为securityName,authentication密码加密,
        //authenticationPassphrase,privacyPass加密方式,privacyPassphrase
        snmp.getUSM().addUser(securityName, new UsmUser(securityName, AuthMD5.ID, passWord, PrivDES.ID, privStr)); 
        ScopedPDU v3pdu = new ScopedPDU(); v3pdu.setType(PDU.NOTIFICATION);
        v3pdu.add(new VariableBinding(SnmpConstants.sysDescr,new OctetString("what's wrong中文测试!"))); 
        snmp.setLocalEngine(enginId, 500, 1); 
        try { ResponseEvent response = snmp.send(v3pdu, userTarget); 
            if (response.getRequest() == null) { // request timed out System.out.println("no response"); } 
            else { System.out.println("Received response from: " + response.getSource()); // dump response PDU  
            System.out.println(response.getRequest().toString()); //显示发送的信息状态。  
            }       
        }catch (Exception e) 
        { e.printStackTrace(); } }
复制代码
AUTH_PRIV则是会验证SecurityName,authenticationPass,privacyPass
复制代码
public void sendSnmpV3WithAuthAndNoPriv(Snmp snmp, Address targetAddr) {
        OctetString securityName = new OctetString("111222333");
        OctetString passWord = new OctetString("111222555");
        OctetString privStr = new OctetString("23152156");
        SNMP4JSettings.setExtensibilityEnabled(true);
        byte[] enginId = "TEO_ID".getBytes();
        USM v3Usm = new USM(SecurityProtocols.getInstance(), new OctetString(enginId), 500);

        SecurityProtocols.getInstance().addDefaultProtocols();

        UserTarget userTarget = new UserTarget();
        userTarget.setVersion(SnmpConstants.version3);
        userTarget.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);
        userTarget.setAddress(targetAddr);
        userTarget.setSecurityName(securityName);
        userTarget.setRetries(2);
        userTarget.setTimeout(3000);
        SecurityModels securityModels = SecurityModels.getInstance();
        securityModels.addSecurityModel(v3Usm);
        snmp.getUSM().addUser(securityName, new UsmUser(securityName, AuthSHA.ID, passWord, PrivDES.ID,privStr));

        ScopedPDU v3pdu = new ScopedPDU();
        v3pdu.setType(PDU.NOTIFICATION);
        v3pdu.add(new   VariableBinding(SnmpConstants.sysDescr,new   OctetString("what's wrong中文测试!")));

        snmp.setLocalEngine(enginId, 500, 1);
        try {
            ResponseEvent response = snmp.send(v3pdu, userTarget);
            if (response.getRequest() == null) {
                // request timed out
                System.out.println("no response");
            } else {
                System.out.println("Received   response   from:   "
                        + response.getSource());
                // dump response PDU
                System.out.println(response.getRequest().toString());

                //显示发送的信息状态。
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
复制代码

 原文:https://www.cnblogs.com/sunroad/p/14290359.html


相关教程