现在的位置: 首页 > 综合 > 正文

利用SNMP4J编写 snmp trap的接收程序实现短信报警

2014年02月13日 ⁄ 综合 ⁄ 共 6152字 ⁄ 字号 评论关闭
代码部分来自于互联网

  1. /** *//**
  2.  * 测试snmp4j 中trap的接收方法.这里只测试了v1和v2的trap.
  3.  * trap接收原理:snmp实例在注册了实现CommandResponder的listener之后,可以通过异步调用的方法
  4.     * 将收到内容输出.
  5.  * listen()启动监听线程,该线程中的操作是监听指定端口,在收到trap告警之后将调用
  6.  * listener.processPdu(CommandResponderEvent event)方法,由processPdu来处理trap信息.
  7.  */
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.ResultSet;
  11. import java.sql.Statement;
  12. import org.snmp4j.CommandResponder;
  13. import org.snmp4j.CommandResponderEvent;
  14. import org.snmp4j.PDU;
  15. import org.snmp4j.Snmp;
  16. import org.snmp4j.TransportMapping;
  17. import org.snmp4j.smi.UdpAddress;
  18. import org.snmp4j.transport.DefaultUdpTransportMapping;
  19. import org.jsmsengine.*;
  20. public class TrapTest{
  21.     public static void main(String[] args){
  22.         
  23.         try{
  24.             //snmp4j通过transportmapping的监听端口接收SNMP信息,所以这里初始化一个
  25.                 //transportmapping,
  26.             //注明本机的IP地址及接收trap的端口.
  27.             TransportMapping transport = new DefaultUdpTransportMapping(new UdpAddress("192.168.10.2/162"));
  28.             //创建一个处理消息的snmp实例
  29.             Snmp snmp = new Snmp(transport);
  30.             //CommandResponder是一个listener,用以处理获取的trap消息
  31.             CommandResponder trapPrinter = new CommandResponder(){
  32.                 public synchronized void processPdu(CommandResponderEvent e){
  33.                     PDU command = e.getPDU();
  34.                     if(command!=null){
  35.                         //这里示例输出trap的内容.具体的trap解析等工作在这里进行.
  36.                         System.out.println(command.toString());
  37.                       
  38.                         sendmesg(command.toString());
  39.                         try{
  40.                          DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  41.                           try{
  42.                               Class.forName("oracle.jdbc.driver.OracleDriver");
  43.                             }catch(Exception e3){
  44.                               System.out.println("No Driver!");
  45.                             }
  46.                             String url = "jdbc:oracle:thin:@local:1521:date";
  47.                             String userName = "user;
  48.                             String password = "pass";
  49.                             Connection conn =DriverManager.getConnection (url, userName, password);
  50.                             // Create a Statement
  51.                             Statement stmt = conn.createStatement ();
  52.                            // Select the ENAME column from the EMP table
  53.                         
  54.                             
  55.                           }catch(Exception e2)
  56.                         {
  57.                             System.out.println(e2);
  58.                         } 
  59.                     }
  60.                 }
  61.             };
  62.             
  63.             //在snmp实例中添加CommandResponder listener
  64.             snmp.addCommandResponder(trapPrinter);
  65.         
  66.             System.out.println("start listening!");
  67.             //开始启动trap监听.listen()方法内部启动了一个线程,这个线程监听发送到transport中定义的端口
  68.                 //的消息.
  69.             transport.listen();
  70.             System.out.println(transport.isListening());//测试监听是否正常
  71.             
  72.             //等待一段测试时间,在这段时间可以发送trap信息测试.
  73.             Thread.sleep(180000);
  74.         } catch (Exception e) {
  75.             e.printStackTrace();
  76.         }
  77.     }
  78.     public static  void sendmesg(String meesage)
  79.     {
  80.         
  81.         CService srv = new CService("COM3"9600"Nokia""6310i");
  82.         System.out.println();
  83.         System.out.println("SendMessage(): sample application.");
  84.         System.out.println("  Using " + srv._name + " " + srv._version);
  85.         System.out.println();
  86.         try
  87.         {
  88.              
  89.             srv.setSimPin("0000");
  90.             srv.connect();
  91.             srv.setSmscNumber("");
  92.             System.out.println("Mobile Device Information: ");
  93.             System.out.println("    Manufacturer  : " + srv.getDeviceInfo().getManufacturer());
  94.             System.out.println("    Model         : " + srv.getDeviceInfo().getModel());
  95.             System.out.println("    Serial No     : " + srv.getDeviceInfo().getSerialNo());
  96.             System.out.println("    IMSI          : " + srv.getDeviceInfo().getImsi());
  97.             System.out.println("    S/W Version   : " + srv.getDeviceInfo().getSwVersion());
  98.             System.out.println("    Battery Level : " + srv.getDeviceInfo().getBatteryLevel() + "%");
  99.             System.out.println("    Signal Level  : " + srv.getDeviceInfo().getSignalLevel() + "%");
  100.             
  101.             try{
  102.                  DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  103.                   try{
  104.                       Class.forName("oracle.jdbc.driver.OracleDriver");
  105.                     }catch(Exception e){
  106.                       System.out.println("No Driver!");
  107.                     }
  108.                     String url = "jdbc:oracle:thin:@loacl:1521:data";
  109.                     String userName = "user";
  110.                     String password = "pass";
  111.                     Connection conn =DriverManager.getConnection (url, userName, password);
  112.                     // Create a Statement
  113.                     Statement stmt = conn.createStatement ();
  114.                    // Select the ENAME column from the EMP table
  115.                     ResultSet rset = stmt.executeQuery ("select * from WARNING");
  116.                     // Iterate through the result and print the employee names
  117.                     String number=null;
  118.                     while(rset.next())
  119.                     {   
  120.                     number=rset.getString("WARTEL");
  121.                     
  122.                     COutgoingMessage msg = new COutgoingMessage(number,meesage");
  123.                     msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_7BIT);
  124.                     msg.setSourcePort(15000);
  125.                     msg.setDestinationPort(16000);
  126.                     srv.sendMessage(msg);
  127.                     srv.disconnect();
  128.                     }
  129.                    
  130.                     rset.clearWarnings();
  131.                     rset.close();
  132.                     stmt.clearWarnings();
  133.                     stmt.close();
  134.                     conn.clearWarnings();
  135.                     conn.close();
  136.             }catch(Exception e2)
  137.             {
  138.                 System.out.println(e2);
  139.             } 
  140.         }
  141.         catch (Exception e)
  142.         {
  143.             e.printStackTrace();
  144.         }
  145.         System.exit(0);
  146.     }
  147. }

抱歉!评论已关闭.