-
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
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比