{"id":1582,"date":"2011-02-24T01:07:23","date_gmt":"2011-02-23T19:37:23","guid":{"rendered":"http:\/\/JitendraZaa.com\/blog\/?p=1582"},"modified":"2011-02-24T01:07:23","modified_gmt":"2011-02-23T19:37:23","slug":"generating-trap-in-snmp-using-snmp4j","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/java\/snmp\/generating-trap-in-snmp-using-snmp4j\/","title":{"rendered":"Generating TRAP in SNMP using SNMP4j"},"content":{"rendered":"<p>As we have discussed, Traps are like events. This is a way the SNMP agent pushes the information to client. Asynchronously, events can be fired to client from server (agent).<\/p>\n<p><!--more--> Example:<\/p>\n<p><strong>SNMP Trap Receiver:<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\npackage com.G2.SNMP.Trap.receiver;\n\nimport java.io.IOException;\n\nimport org.snmp4j.CommandResponder;\nimport org.snmp4j.CommandResponderEvent;\nimport org.snmp4j.CommunityTarget;\nimport org.snmp4j.MessageDispatcher;\nimport org.snmp4j.MessageDispatcherImpl;\nimport org.snmp4j.MessageException;\nimport org.snmp4j.PDU;\nimport org.snmp4j.Snmp;\nimport org.snmp4j.mp.MPv1;\nimport org.snmp4j.mp.MPv2c;\nimport org.snmp4j.mp.StateReference;\nimport org.snmp4j.mp.StatusInformation;\nimport org.snmp4j.security.Priv3DES;\nimport org.snmp4j.security.SecurityProtocols;\nimport org.snmp4j.smi.OctetString;\nimport org.snmp4j.smi.TcpAddress;\nimport org.snmp4j.smi.TransportIpAddress;\nimport org.snmp4j.smi.UdpAddress;\nimport org.snmp4j.transport.AbstractTransportMapping;\nimport org.snmp4j.transport.DefaultTcpTransportMapping;\nimport org.snmp4j.transport.DefaultUdpTransportMapping;\nimport org.snmp4j.util.MultiThreadedMessageDispatcher;\nimport org.snmp4j.util.ThreadPool;\n\npublic class TrapReceiver implements CommandResponder {\n\tpublic static void main(String&#x5B;] args) {\n\t\tTrapReceiver snmp4jTrapReceiver = new TrapReceiver();\n\t\ttry {\n\t\t\tsnmp4jTrapReceiver.listen(new UdpAddress(&quot;localhost\/162&quot;));\n\t\t} catch (IOException e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n\t\/**\n\t * Trap Listner\n\t *\/\n\tpublic synchronized void listen(TransportIpAddress address)\n\t\t\tthrows IOException {\n\t\tAbstractTransportMapping transport;\n\t\tif (address instanceof TcpAddress) {\n\t\t\ttransport = new DefaultTcpTransportMapping((TcpAddress) address);\n\t\t} else {\n\t\t\ttransport = new DefaultUdpTransportMapping((UdpAddress) address);\n\t\t}\n\n\t\tThreadPool threadPool = ThreadPool.create(&quot;DispatcherPool&quot;, 10);\n\t\tMessageDispatcher mDispathcher = new MultiThreadedMessageDispatcher(\n\t\t\t\tthreadPool, new MessageDispatcherImpl());\n\n\t\t\/\/ add message processing models\n\t\tmDispathcher.addMessageProcessingModel(new MPv1());\n\t\tmDispathcher.addMessageProcessingModel(new MPv2c());\n\n\t\t\/\/ add all security protocols\n\t\tSecurityProtocols.getInstance().addDefaultProtocols();\n\t\tSecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());\n\n\t\t\/\/ Create Target\n\t\tCommunityTarget target = new CommunityTarget();\n\t\ttarget.setCommunity(new OctetString(&quot;public&quot;));\n\n\t\tSnmp snmp = new Snmp(mDispathcher, transport);\n\t\tsnmp.addCommandResponder(this);\n\n\t\ttransport.listen();\n\t\tSystem.out.println(&quot;Listening on &quot; + address);\n\n\t\ttry {\n\t\t\tthis.wait();\n\t\t} catch (InterruptedException ex) {\n\t\t\tThread.currentThread().interrupt();\n\t\t}\n\t}\n\n\t\/**\n\t * This method will be called whenever a pdu is received on the given port\n\t * specified in the listen() method\n\t *\/\n\tpublic synchronized void processPdu(CommandResponderEvent cmdRespEvent) {\n\t\tSystem.out.println(&quot;Received PDU...&quot;);\n\t\tPDU pdu = cmdRespEvent.getPDU();\n\t\tif (pdu != null) {\n\t\t\tSystem.out.println(&quot;Trap Type = &quot; + pdu.getType());\n\t\t\tSystem.out.println(&quot;Variables = &quot; + pdu.getVariableBindings());\n\t\t\t}\n\t\t}\n\t}\n<\/pre>\n<p><strong>Version 1 Trap Sender:<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\npackage com.G2.SNMP.Trap.Sender;\n\nimport org.snmp4j.CommunityTarget;\nimport org.snmp4j.PDU;\nimport org.snmp4j.PDUv1;\nimport org.snmp4j.Snmp;\nimport org.snmp4j.TransportMapping;\nimport org.snmp4j.mp.SnmpConstants;\nimport org.snmp4j.smi.IpAddress;\nimport org.snmp4j.smi.OID;\nimport org.snmp4j.smi.OctetString;\nimport org.snmp4j.smi.UdpAddress;\nimport org.snmp4j.transport.DefaultUdpTransportMapping;\n\npublic class TrapSenderVersion1 {\n\n\tpublic static final String community = &quot;public&quot;;\n\n\t\/\/ Sending Trap for sysLocation of RFC1213\n\tpublic static final String Oid = &quot;.1.3.6.1.2.1.1.8&quot;;\n\n\t\/\/IP of Local Host\n\tpublic static final String ipAddress = &quot;127.0.0.1&quot;;\n\n\t\/\/Ideally Port 162 should be used to send receive Trap, any other available Port can be used\n\tpublic static final int port = 162;\n\n\tpublic static void main(String&#x5B;] args) {\n\t\tTrapSenderVersion1 trapV1 = new TrapSenderVersion1();\n\t\ttrapV1.sendTrap_Version1();\n\t}\n\t\/**\n\t * This methods sends the V1 trap to the Localhost in port 162\n\t *\/\n\tpublic void sendTrap_Version1() {\n\t\ttry {\n\t\t\t\/\/ Create Transport Mapping\n\t\t\tTransportMapping transport = new DefaultUdpTransportMapping();\n\t\t\ttransport.listen();\n\n\t\t\t\/\/ Create Target\n\t\t\tCommunityTarget cTarget = new CommunityTarget();\n\t\t\tcTarget.setCommunity(new OctetString(community));\n\t\t\tcTarget.setVersion(SnmpConstants.version1);\n\t\t\tcTarget.setAddress(new UdpAddress(ipAddress + &quot;\/&quot; + port));\n\t\t\tcTarget.setTimeout(5000);\n\t\t\tcTarget.setRetries(2);\n\n\t\t\tPDUv1 pdu = new PDUv1();\n\t\t\tpdu.setType(PDU.V1TRAP);\n\t\t\tpdu.setEnterprise(new OID(Oid));\n\t\t\tpdu.setGenericTrap(PDUv1.ENTERPRISE_SPECIFIC);\n\t\t\tpdu.setSpecificTrap(1);\n\t\t\tpdu.setAgentAddress(new IpAddress(ipAddress));\n\n\t\t\t\/\/ Send the PDU\n\t\t\tSnmp snmp = new Snmp(transport);\n\t\t\tSystem.out.println(&quot;Sending V1 Trap... Check Wheather NMS is Listening or not? &quot;);\n\t\t\tsnmp.send(pdu, cTarget);\n\t\t\tsnmp.close();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n}\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<blockquote><p>Listening on 127.0.0.1\/162<br \/>\nReceived PDU&#8230;<br \/>\nTrap Type = -92<br \/>\nVariables = []<\/p><\/blockquote>\n<p><strong>Version 2 Trap Sender:<\/strong><\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\npackage com.G2.SNMP.Trap.Sender;\n\nimport java.util.Date;\n\nimport org.snmp4j.CommunityTarget;\nimport org.snmp4j.PDU;\nimport org.snmp4j.Snmp;\nimport org.snmp4j.TransportMapping;\nimport org.snmp4j.mp.SnmpConstants;\nimport org.snmp4j.smi.IpAddress;\nimport org.snmp4j.smi.OID;\nimport org.snmp4j.smi.OctetString;\nimport org.snmp4j.smi.UdpAddress;\nimport org.snmp4j.smi.VariableBinding;\nimport org.snmp4j.transport.DefaultUdpTransportMapping;\n\npublic class TrapSenderVersion2 {\n\n\tpublic static final String community = &quot;public&quot;;\n\n\t\/\/ Sending Trap for sysLocation of RFC1213\n\tpublic static final String Oid = &quot;.1.3.6.1.2.1.1.8&quot;;\n\n\t\/\/IP of Local Host\n\tpublic static final String ipAddress = &quot;127.0.0.1&quot;;\n\n\t\/\/Ideally Port 162 should be used to send receive Trap, any other available Port can be used\n\tpublic static final int port = 162;\n\n\tpublic static void main(String&#x5B;] args) {\n\t\tTrapSenderVersion2 trapV2 = new TrapSenderVersion2();\n\t\ttrapV2.sendTrap_Version2();\n\t}\n\t\/**\n\t * This methods sends the V1 trap to the Localhost in port 162\n\t *\/\n\tpublic void sendTrap_Version2() {\n\t\ttry {\n\t\t\t\/\/ Create Transport Mapping\n\t\t\tTransportMapping transport = new DefaultUdpTransportMapping();\n\t\t\ttransport.listen();\n\n\t\t\t\/\/ Create Target\n\t\t\tCommunityTarget cTarget = new CommunityTarget();\n\t\t\tcTarget.setCommunity(new OctetString(community));\n\t\t\tcTarget.setVersion(SnmpConstants.version2c);\n\t\t\tcTarget.setAddress(new UdpAddress(ipAddress + &quot;\/&quot; + port));\n\t\t\tcTarget.setRetries(2);\n\t\t\tcTarget.setTimeout(5000);\n\n\t\t\t\/\/ Create PDU for V2\n\t\t\tPDU pdu = new PDU();\n\n\t\t\t\/\/ need to specify the system up time\n\t\t\tpdu.add(new VariableBinding(SnmpConstants.sysUpTime,\n\t\t\t\t\tnew OctetString(new Date().toString())));\n\t\t\tpdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, new OID(\n\t\t\t\t\tOid)));\n\t\t\tpdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,\n\t\t\t\t\tnew IpAddress(ipAddress)));\n\n\t\t\tpdu.add(new VariableBinding(new OID(Oid), new OctetString(\n\t\t\t\t\t&quot;Major&quot;)));\n\t\t\tpdu.setType(PDU.NOTIFICATION);\n\n\t\t\t\/\/ Send the PDU\n\t\t\tSnmp snmp = new Snmp(transport);\n\t\t\tSystem.out.println(&quot;Sending V2 Trap... Check Wheather NMS is Listening or not? &quot;);\n\t\t\tsnmp.send(pdu, cTarget);\n\t\t\tsnmp.close();\n\t\t} catch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t}\n\n}\n<\/pre>\n<p><strong>Output:<\/strong><\/p>\n<blockquote><p>Listening on 127.0.0.1\/162<br \/>\nReceived PDU&#8230;<br \/>\nTrap Type = -89<br \/>\nVariables = [1.3.6.1.2.1.1.3.0 = Wed Feb 16 01:17:02 IST 2011, 1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.2.1.1.6, 1.3.6.1.6.3.18.1.3.0 = 127.0.0.1, 1.3.6.1.2.1.1.6 = Major]<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Generating TRAP in SNMP using SNMP4j<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[329,183],"class_list":["post-1582","post","type-post","status-publish","format-standard","hentry","category-snmp","tag-java","tag-snmp4j"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1571,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/snmp\/create-snmp-client-in-java-using-snmp4j\/","url_meta":{"origin":1582,"position":0},"title":"Create SNMP Client in JAVA Using SNMP4j","author":"Jitendra","date":"February 23, 2011","format":false,"excerpt":"Create SNMP Client in JAVA Using SNMP4j","rel":"","context":"In &quot;SNMP&quot;","block_context":{"text":"SNMP","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/snmp\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1576,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/snmp\/creating-snmp-agent-server-in-java-using-snmp4j\/","url_meta":{"origin":1582,"position":1},"title":"Creating SNMP Agent (Server) in JAVA using SNMP4j","author":"Jitendra","date":"February 24, 2011","format":false,"excerpt":"Creating SNMP Agent (Server) in JAVA using SNMP4j","rel":"","context":"In &quot;SNMP&quot;","block_context":{"text":"SNMP","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/snmp\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1750,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/create-xml-file-using-jaxp-and-transformation-apis\/","url_meta":{"origin":1582,"position":2},"title":"Create XML File using DOM Parser of JAXP and Transformation APIs","author":"Jitendra","date":"March 22, 2011","format":false,"excerpt":"Example of Creating XML File using JAXP and Transformation APIs","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1764,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/read-xml-file-using-sax-parser-in-java\/","url_meta":{"origin":1582,"position":3},"title":"Read XML File using SAX Parser in JAVA","author":"Jitendra","date":"March 22, 2011","format":false,"excerpt":"Example of Reading XML File using SAX Parser in JAVA","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/"},"img":{"alt_text":"SAX Parser","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2011\/03\/SAX-Parser.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1767,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/xml-tree-viewer-using-sax-parser-in-java-with-jtreejfilechooser-component-of-swing\/","url_meta":{"origin":1582,"position":4},"title":"XML Tree Viewer using SAX Parser in JAVA with Jtree,JFileChooser component of Swing","author":"Jitendra","date":"March 22, 2011","format":false,"excerpt":"XML Tree Viewer using SAX Parser in JAVA with Jtree,JFileChooser component of Swing, How to refresh Jtree when content changes , Expand or collapse JTree","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/"},"img":{"alt_text":"XML Tree Viewer using SAX Parser in JAVA","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2011\/03\/XML-Tree-Viewer-using-SAX-Parser-in-JAVA.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":867,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/textbox-button-anonymous-actionlistener\/","url_meta":{"origin":1582,"position":5},"title":"Event Handling using Anonymous Class in Applet","author":"Jitendra","date":"August 25, 2010","format":false,"excerpt":"Source code to demonstrate the usage of anonymous class in Applet","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/"},"img":{"alt_text":"Event Handling using Anonymous Class in Applet ","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2010\/08\/AnonymousClass1.jpeg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/1582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=1582"}],"version-history":[{"count":0,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/1582\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=1582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=1582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=1582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}