下面是两个用于发送和接收Trap报文信息的类:

  1. import java.io.IOException;
  2. import java.net.UnknownHostException;
  3. import java.util.Vector;
  4. import org.snmp4j.CommandResponder;
  5. import org.snmp4j.CommandResponderEvent;
  6. import org.snmp4j.MessageDispatcherImpl;
  7. import org.snmp4j.Snmp;
  8. import org.snmp4j.TransportMapping;
  9. import org.snmp4j.mp.MPv1;
  10. import org.snmp4j.mp.MPv2c;
  11. import org.snmp4j.mp.MPv3;
  12. import org.snmp4j.security.SecurityModels;
  13. import org.snmp4j.security.SecurityProtocols;
  14. import org.snmp4j.security.USM;
  15. import org.snmp4j.smi.Address;
  16. import org.snmp4j.smi.GenericAddress;
  17. import org.snmp4j.smi.OctetString;
  18. import org.snmp4j.smi.TcpAddress;
  19. import org.snmp4j.smi.UdpAddress;
  20. import org.snmp4j.smi.VariableBinding;
  21. import org.snmp4j.transport.DefaultTcpTransportMapping;
  22. import org.snmp4j.transport.DefaultUdpTransportMapping;
  23. import org.snmp4j.util.MultiThreadedMessageDispatcher;
  24. import org.snmp4j.util.ThreadPool;
  25. /**
  26. * 本类用于监听代理进程的Trap信息
  27. *
  28. * @author zhanjia
  29. *
  30. */
  31. public class MultiThreadedTrapReceiver implements CommandResponder {
  32. private MultiThreadedMessageDispatcher dispatcher;
  33. private Snmp snmp = null;
  34. private Address listenAddress;
  35. private ThreadPool threadPool;
  36. public MultiThreadedTrapReceiver() {
  37. // BasicConfigurator.configure();
  38. }
  39. private void init() throws UnknownHostException, IOException {
  40. threadPool = ThreadPool.create("Trap", 2);
  41. dispatcher = new MultiThreadedMessageDispatcher(threadPool,
  42. new MessageDispatcherImpl());
  43. listenAddress = GenericAddress.parse(System.getProperty(
  44. "snmp4j.listenAddress", "udp:192.168.1.23/162")); // 本地IP与监听端口
  45. TransportMapping transport;
  46. // 对TCP与UDP协议进行处理
  47. if (listenAddress instanceof UdpAddress) {
  48. transport = new DefaultUdpTransportMapping(
  49. (UdpAddress) listenAddress);
  50. } else {
  51. transport = new DefaultTcpTransportMapping(
  52. (TcpAddress) listenAddress);
  53. }
  54. snmp = new Snmp(dispatcher, transport);
  55. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1());
  56. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c());
  57. snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3());
  58. USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3
  59. .createLocalEngineID()), 0);
  60. SecurityModels.getInstance().addSecurityModel(usm);
  61. snmp.listen();
  62. }
  63. public void run() {
  64. try {
  65. init();
  66. snmp.addCommandResponder(this);
  67. System.out.println("开始监听Trap信息!");
  68. } catch (Exception ex) {
  69. ex.printStackTrace();
  70. }
  71. }
  72. /**
  73. * 实现CommandResponder的processPdu方法, 用于处理传入的请求、PDU等信息
  74. * 当接收到trap时,会自动进入这个方法
  75. *
  76. * @param respEvnt
  77. */
  78. public void processPdu(CommandResponderEvent respEvnt) {
  79. // 解析Response
  80. if (respEvnt != null && respEvnt.getPDU() != null) {
  81. Vector<VariableBinding> recVBs = respEvnt.getPDU().getVariableBindings();
  82. for (int i = 0; i < recVBs.size(); i++) {
  83. VariableBinding recVB = recVBs.elementAt(i);
  84. System.out.println(recVB.getOid() + " : " + recVB.getVariable());
  85. }
  86. }
  87. }
  88. public static void main(String[] args) {
  89. MultiThreadedTrapReceiver multithreadedtrapreceiver = new MultiThreadedTrapReceiver();
  90. multithreadedtrapreceiver.run();
  91. }
  92. }

转载于:https://blog.51cto.com/wangjingchao/914932

利用SNMP4J实现Snmp Trap相关推荐

  1. 利用SNMP4J实现 Snmp Trap 完整例子

    Snmp v1 , v2c, v3 版本发送 Snmp Trap: package com.snmp.trapServer;import java.io.IOException;import org. ...

  2. 使用snmp4j实现Snmp功能(三)

    前两篇文章讲了如何使用Snmp4j实现Set.Get(使用snmp4j实现Snmp功能(一))以及发送.接收Trap(使用snmp4j实现Snmp功能(二)) 功能. 在我们前面的实现中,如果访问MI ...

  3. SNMP Trap的session问题

    1.前言 最近遇到了个问题,SNMPv3 Trap上报,在snmp agent侧修改了用户密码,管理站mibbroswer上没有修改trap用户的密码,仍然可接收到trap上报消息.通过Wiresha ...

  4. 浅谈 Linux 系统中的 SNMP Trap 【转】

    文章来源:浅谈 Linux 系统中的 SNMP Trap 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧. 简单网络管理协议(Simple Network ...

  5. Linux 系统中的 SNMP Trap

    简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧. 简单网络管理协议(Simple Network Management Protocol)是一种应用层协议, ...

  6. Linux 系统中的 SNMP Trap及常用OID

    浅谈 Linux 系统中的 SNMP Trap 转载: http://www.ibm.com/developerworks/cn/linux/l-cn-snmp/ 本文讲解 SNMP Trap,在介绍 ...

  7. zabbix snmp trap 监控

    I hate snmptrap!!! ################## snmptrap server端的配置 snmptrap server运行在zabbix server或proxy上 mkd ...

  8. 使用Zabbix的SNMP trap监控类型监控设备的一个例子

    转载来源 :使用Zabbix的SNMP trap监控类型监控设备的一个例子 :https://www.jianshu.com/p/aa795afdf655 介绍 本文以监控绿盟设备为例. 1.登录被监 ...

  9. snmp trap 如何在浏览器中_SNMP Trap的功能介绍

    前面我们已经对SNMP协议有所了解了,随着对这个协议的了解,我们也发现,它的更能更为强大.其中包括了多种协议的支持.那么今天我们就来详细介绍一下SNMP Trap的具体内容.那么什么是SNMP Tra ...

最新文章

  1. 大佬带你详解Python反爬虫措施以及爬虫编写注意事项
  2. python 对字典排序
  3. sklearn识别单张自定义手写数字图片
  4. 【几何/数学】概念的理解 —— (非)刚体变换((non-)rigid transformation)
  5. 自己把握系统安全,Windows自启动程序的十大藏身之所
  6. 网络克隆自动修改计算机名ip,GHOST网克专用IP及计算机名自动修改器
  7. Spark Structured Steaming 聚合、watermark 以及 window操作,结合输出模式的研究总结
  8. 计算机二级access数据库考试题型,2016最新计算机二级Access数据库试题及答案
  9. 电商产品经理:电商后台系统
  10. css控制广告位置,CSS固定定位实现右下角可关闭广告
  11. 常见6种视频文件格式的优缺点归纳
  12. Golang map 并发读写问题源码分析
  13. win10鼠标右键一直转圈怎么解决 鼠标右键一直转圈
  14. wifi+遥控器+android,基于安卓手机wifi的智能遥控器设计
  15. python百度爬虫_Python爬虫 - 简单抓取百度指数
  16. 零点起飞学java web_零点起飞学Java Web开发 (徐林林) 高清PDF扫描版 114M
  17. 用python爬取企查查_python爬取企查查江苏企业信息生成excel表格
  18. 克隆好的CentOS6虚拟机如何联网,解决报错Device eth0 does not seem to be present, delaying initialization
  19. xinetd的安装配置
  20. 其他:Pycharm 常用快捷键

热门文章

  1. 从零开始单排学设计模式「简单工厂设计模式」黑铁 III
  2. sql 2008数据库日志清理(转)
  3. 【知识总结】Java类初始化顺序说明
  4. c语言实现字符指针(字符串)数组的排序
  5. docker修改默认存储位置
  6. PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程
  7. C#各种加密算法的研究
  8. python优先队列_python实现最大优先队列
  9. 神经网络结构与输出值之间的关系
  10. 财务 计算机网络,计算机网络技术在财务系统中的应用