SNMP4J 发送Trap v1 v2c v3

使用snmp4j 发送各个版本Trap (v1 v2c v3)


import java.io.IOException;



import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.PDUv1;
import org.snmp4j.SNMP4JSettings;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.Priv3DES;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;


public class SnmpPoc {


private Snmp snmp = null;


private Address targetAddress = null;


private TransportMapping<UdpAddress> transport = null;


private String username = "user1";
private String authPassword = "password1";
private String privPassword = "password2";


public static void main(String[] args) {


SnmpPoc poc = new SnmpPoc();


try {
poc.init();


poc.sendV1Trap();


poc.sendV2cTrap();


poc.sendV3TrapNoAuthNoPriv();


poc.sendV3Auth();


} catch (IOException e) {
e.printStackTrace();
}


}


public void init() throws IOException {
targetAddress = GenericAddress.parse("udp:127.0.0.1/162");
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
}


public ResponseEvent sendV1Trap() throws IOException {
PDUv1 pdu = new PDUv1();
VariableBinding v = new VariableBinding();
v.setOid(SnmpConstants.sysName);
v.setVariable(new OctetString("Snmp Trap V1 Test"));
pdu.add(v);
pdu.setType(PDU.V1TRAP);


// set target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
// retry times when commuication error
target.setRetries(2);
// timeout
target.setTimeout(1500);
target.setVersion(SnmpConstants.version1);
// send pdu, return response
return snmp.send(pdu, target);
}


public ResponseEvent sendV2cTrap() throws IOException {


PDU pdu = new PDU();
VariableBinding v = new VariableBinding();
v.setOid(SnmpConstants.sysName);
v.setVariable(new OctetString("Snmp Trap V2 Test"));
pdu.add(v);
pdu.setType(PDU.TRAP);


// set target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);


// retry times when commuication error
target.setRetries(2);
target.setTimeout(1500);
target.setVersion(SnmpConstants.version2c);
// send pdu, return response
return snmp.send(pdu, target);


}


public ResponseEvent sendV3TrapNoAuthNoPriv() throws IOException {
SNMP4JSettings.setExtensibilityEnabled(true);
SecurityProtocols.getInstance().addDefaultProtocols();


UserTarget target = new UserTarget();
target.setVersion(SnmpConstants.version3);


try {
transport = new DefaultUdpTransportMapping();
} catch (IOException e1) {
e1.printStackTrace();
}


byte[] enginId = "TEO_ID".getBytes();
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(
enginId), 500);
SecurityModels secModels = SecurityModels.getInstance();
if (snmp.getUSM() == null) {
secModels.addSecurityModel(usm);
}


target.setSecurityLevel(SecurityLevel.NOAUTH_NOPRIV);


target.setAddress(targetAddress);


ScopedPDU pdu = new ScopedPDU();
pdu.setType(PDU.NOTIFICATION);
VariableBinding v = new VariableBinding();
v.setOid(SnmpConstants.sysName);
v.setVariable(new OctetString("Snmp Trap V3 Test"));
pdu.add(v);


snmp.setLocalEngine(enginId, 500, 1);
return snmp.send(pdu, target);
}


public ResponseEvent sendV3Auth() throws IOException {
SNMP4JSettings.setExtensibilityEnabled(true);
SecurityProtocols.getInstance().addDefaultProtocols();


UserTarget target = new UserTarget();
target.setSecurityName(new OctetString(username));
target.setVersion(SnmpConstants.version3);


try {
transport = new DefaultUdpTransportMapping();
} catch (IOException e1) {
e1.printStackTrace();
}


byte[] enginId = "TEO_ID".getBytes();
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(
enginId), 500);
SecurityModels secModels = SecurityModels.getInstance();
synchronized (secModels) {
if (snmp.getUSM() == null) {
secModels.addSecurityModel(usm);
}


snmp.getUSM().addUser(
new OctetString(username),
new OctetString(enginId),
new UsmUser(new OctetString(username), AuthMD5.ID,
new OctetString(authPassword), Priv3DES.ID,
new OctetString(privPassword)));
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);


target.setAddress(targetAddress);


ScopedPDU pdu = new ScopedPDU();
pdu.setType(PDU.NOTIFICATION);
VariableBinding v = new VariableBinding();
v.setOid(SnmpConstants.sysName);
v.setVariable(new OctetString("Snmp Trap V3 Test"));
pdu.add(v);


snmp.setLocalEngine(enginId, 500, 1);
return snmp.send(pdu, target);
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SNMP Trap 是一种通过网络发送的消息,用于通知网络管理系统发生的事件或警报。使用C编程语言编译的 SNMP Trap 发送工具可以方便地将自定义的事件信息发送给网络管理系统。 C编程语言是一种功能强大的编程语言,广泛应用于系统级别的编程和网络通信。通过使用C编译的 SNMP Trap 发送工具,我们可以自定义并生成符合 SNMP 协议的消息,包括事件类型、事件级别、事件描述等信息。 C编译的 SNMP Trap 发送工具的作用主要有以下几点: 1. 实现自定义事件通知:通过使用C编程语言,我们可以利用 SNMP Trap 发送工具定义自己的特定事件,并将其发送给网络管理系统。这有助于及时通知管理人员有关网络设备或系统的重要事件,如故障警报、性能问题等。 2. 支持跨平台和网络设备:C编程语言可以在各种操作系统和硬件平台上运行,因此使用C编译的 SNMP Trap 发送工具可以在不同的网络设备上使用。这样就能够实现对网络中各种设备的统一管理和监控。 3. 提高效率和灵活性:C编程语言的高效性和灵活性使得使用C编译的 SNMP Trap 发送工具能够更快地发送消息并适应各种网络环境。此外,通过使用C语言,我们还可以根据具体需求对发送工具进行自定义的修改和优化。 总之,使用C编译的 SNMP Trap 发送工具可以帮助我们实现自定义事件通知、跨平台管理和提高效率灵活性。它在网络管理中起到了非常重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值