SNMP在Window系统中的简单测试应用

     在window系统中简单的配置之后,使用SNMP4J的测试的信息如下:

  以下部分的SNMP中MIB中OID可能错误,希望大家不惜指出,谢谢!

package com.easyway.snmp;

import java.io.IOException;
import java.util.Vector;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
/**
 * 
 * snmp简单应用
 * @author longgangbai
 *
 */
public class SnmpUtils {   
  
    
  
       private Snmp snmp = null;   
  
    
  
       private Address targetAddress = null;   
  
    
      /**
       * 初始化SNMP的各种信息
       * @throws IOException
       */
       public void initComm() throws IOException {   
              //创建设备代理的地址信息
              targetAddress = GenericAddress.parse("udp:192.168.0.175/161");   
              //创建默认的Udp传输影响对象
              TransportMapping transport = new DefaultUdpTransportMapping();   
              //创建snmp对象
              snmp = new Snmp(transport);   
              //开始snmp监听性
              transport.listen();   
  
       }   
  
    
       /**
        * 响应snmp的信息的方法
        * @param pdu
        * @return
        * @throws IOException
        */
       public ResponseEvent sendPDU(PDU pdu) throws IOException {   
  
              //创建团体对象(一般在客户端设置的)
              CommunityTarget target = new CommunityTarget();   
              target.setCommunity(new OctetString("public"));  
              //设置snmp监听地址的团体
              target.setAddress(targetAddress);   
  
              //设置请求的次数
              target.setRetries(2);   
  
              //设置请求的超时时间的
              target.setTimeout(1500);   
              //设置snmp的版本信息
              target.setVersion(SnmpConstants.version1);   
  
              //设置设备Agent的代理的响应的对象团体
              return snmp.send(pdu, target);   
       }   
  
          
      /**
       * 设置要监控的PDU对象
       * @throws IOException
       */
       public void setPDU() throws IOException {   
  
              //设置设备Agent代理的电脑名字的PDU
    	     
              PDU pdu = new PDU();   
              pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 5, 0 }), new OctetString("SNMP-PCNAME")));   
              pdu.setType(PDU.SET);   
              sendPDU(pdu); 
             
              //设置设备Agent代理电脑的工作组的PDU   
     	     
              PDU pdu0 = new PDU();   
              pdu0.add(new VariableBinding(new OID(new int[] {  1, 3, 6, 1, 4, 1, 77, 1, 4,1,0 }), new OctetString("SNMP-WORKGROUP"))); 
              pdu0.setType(PDU.SET);   
              sendPDU(pdu0); 
              
              
              //设置设备Agent代理电脑的系统信息
              PDU pdu1 = new PDU();   
              pdu1.add(new VariableBinding(new OID(new int[] {  1, 3, 6, 1, 2, 1, 1, 1, 0 }), new OctetString("SNMP-SYSTEM-INFO"))); 
              pdu1.setType(PDU.SET);   
              sendPDU(pdu1); 
              
              //设置设备Agent代理电脑的启动时间
              PDU pdu2 = new PDU();   
              pdu2.add(new VariableBinding(new OID(new int[] {  1, 3, 6, 1, 2, 1, 1, 3 }), new OctetString("SNMP-SYSTEM-STARTUP"))); 
              pdu2.setType(PDU.SET);   
              sendPDU(pdu2);   
              
              
              //设置设备代理电脑的联系人
              PDU pdu3 = new PDU();   
              pdu3.add(new VariableBinding(new OID(new int[] {  1, 3, 6, 1, 2, 1, 1, 4,0 }), new OctetString("SNMP-SYSTEM-LINKMAN"))); 
              pdu3.setType(PDU.SET);   
              sendPDU(pdu3);  
              
              //设置设备代理电脑序列号
              //Getting Server Serial Number: 
              //snmputil get 127.0.0.1 public .1.3.6.1.4.1.23.2.28.1.2.0 
              PDU pdu4 = new PDU();   
              pdu4.add(new VariableBinding(new OID(new int[] {  1,3,6,1,4,1,23,2,28,1,2,0  }), new OctetString("SNMP-SYSTEM-SERIAL-NUMBER"))); 
              pdu4.setType(PDU.SET);   
              sendPDU(pdu4);   
              
              //设置设备代理DOS内存使用率
              PDU dosmermory = new PDU();   
              dosmermory.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,1 }), new OctetString("SNMP-SYSTEM-DOS-MERMORY"))); 
              dosmermory.setType(PDU.SET);   
              sendPDU(dosmermory);  
              
              
              //设置设备代理电脑ALLOC-MEMORY-POOL
              PDU memroypoll = new PDU();   
              memroypoll.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,2  }), new OctetString("SNMP-SYSTEM-ALLOC-MEMORY-POOL"))); 
              memroypoll.setType(PDU.SET);   
              sendPDU(memroypoll);  
              
              
              //设置设备代理缓存Buffer
              PDU cachebuffer = new PDU();   
              cachebuffer.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,3  }), new OctetString("SNMP-SYSTEM-CACHE-BUFFER"))); 
              cachebuffer.setType(PDU.SET);   
              sendPDU(cachebuffer);  
              
              
              //设置设备代理电脑Cache Moveable Memory 
              PDU cachemoveablemoemory = new PDU();   
              cachemoveablemoemory.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,4 }), new OctetString("SNMP-SYSTEM-SERIAL-NUMBER"))); 
              cachemoveablemoemory.setType(PDU.SET);   
              sendPDU(cachemoveablemoemory);  
              
              
              //设置设备代理电脑Cache No Moveable Memory 
              PDU cachenomoveablemoemory = new PDU();   
              cachenomoveablemoemory.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,5 }), new OctetString("SNMP-SYSTEM-SERIAL-NUMBER"))); 
              cachenomoveablemoemory.setType(PDU.SET);   
              sendPDU(cachenomoveablemoemory);  
              
              
              //设置设备代理电脑Code and Data Memory: 
              PDU memory = new PDU();   
              memory.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,6 }), new OctetString("SNMP-SYSTEM-CODE-DATA-MEMORY"))); 
              memory.setType(PDU.SET);   
              sendPDU(memory);  
              
              
              //设置设备代理内存使用
              PDU usedmemory = new PDU();   
              usedmemory.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,5,1,1,2,1 }), new OctetString("SNMP-SYSTEM-USSED-MEMORY"))); 
              usedmemory.setType(PDU.SET);   
              sendPDU(usedmemory);  
              
              
              //设置设备代理电脑CPU使用
              PDU cpu = new PDU();   
              cpu.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,5,1,1,1,1}), new OctetString("SNMP-SYSTEM-USED-CPU"))); 
              cpu.setType(PDU.SET);   
              sendPDU(cpu);  
              
              //设置设备代理电脑系统服务
              PDU sysSrv = new PDU();   
              sysSrv.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,7 }), new OctetString("SNMP-SYSTEM-SERVICES"))); 
              sysSrv.setType(PDU.SET);   
              sendPDU(sysSrv);  
              
              //设置设备代理电脑RAM空闲空间
              PDU ramFree = new PDU();   
              ramFree.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,2,0  }), new OctetString("SNMP-SYSTEM-RAM-FREE"))); 
              ramFree.setType(PDU.SET);   
              sendPDU(ramFree);  
              //设置代理虚拟内存
              PDU vmmemory = new PDU();   
              vmmemory.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,1,3  }), new OctetString("SNMP-VM-MEMORY"))); 
              vmmemory.setType(PDU.SET);   
              sendPDU(vmmemory); 
              //设置代理电脑的系统进程数量
              PDU processNum = new PDU();   
              processNum.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,1,60  }), new OctetString("SNMP-SYTEM-PROCESSNUM"))); 
              processNum.setType(PDU.SET);   
              sendPDU(processNum); 
              
PDU systemDate = new PDU();   
              systemDate.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,1,2   }), new OctetString("SNMP-SYSTEM-DATE"))); 
              systemDate.setType(PDU.SET);   
              sendPDU(systemDate); 

              
              
       }   
  
          
       /**
        * 获取要监控的PDU
        * @throws IOException
        */
       public void getPDU() throws IOException {   
  
              // get PDU   
              PDU pdu = new PDU();   
              pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 5, 0 })));   
              pdu.setType(PDU.GET);   
              readResponse(sendPDU(pdu));   
              
              
              // get PDU   
              PDU pdu0 = new PDU();   
              pdu0.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 4, 1, 77, 1, 4,1,0 })));   
              pdu0.setType(PDU.GET);   
              readResponse(sendPDU(pdu0)); 
              
              
              PDU pdu1 = new PDU();   
              pdu1.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 1, 0 })));   
              pdu1.setType(PDU.GET);   
              readResponse(sendPDU(pdu1));  
         
  
              PDU pdu2 = new PDU();   
              pdu2.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 3  })));   
              pdu2.setType(PDU.GETNEXT);   
              readResponse(sendPDU(pdu2)); 
              
              
              
              PDU pdu3 = new PDU();   
              pdu3.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 4,0 })));   
      		  pdu3.setType(PDU.GET);   
              readResponse(sendPDU(pdu3)); 
              
              
              PDU pdu4 = new PDU();   
              pdu4.add(new VariableBinding(new OID(new int[] {  1,3,6,1,4,1,23,2,28,1,2,0 })));   
              pdu4.setType(PDU.GETNEXT);   
              readResponse(sendPDU(pdu4));
              
              //设置设备代理DOS内存使用
              PDU dosmermory = new PDU();   
              dosmermory.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,1}))); 
              dosmermory.setType(PDU.GETNEXT);   
              readResponse(sendPDU(dosmermory)); 
              
              
              //设置设备代理电脑ALLOC-MEMORY-POOL
              PDU memroypoll = new PDU();   
              memroypoll.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,2  }))); 
              memroypoll.setType(PDU.GETNEXT);  
              readResponse(sendPDU(memroypoll));
              
              
              //设置设备代理缓存Buffer
              PDU cachebuffer = new PDU();   
              cachebuffer.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,3  }))); 
              cachebuffer.setType(PDU.GET);
              readResponse(sendPDU(cachebuffer));
              
              
              //设置设备代理电脑Cache Moveable Memory 
              PDU cachemoveablemoemory = new PDU();   
              cachemoveablemoemory.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,4 }))); 
              cachemoveablemoemory.setType(PDU.GET);
              readResponse(sendPDU(cachemoveablemoemory));
              
              
              
              //设置设备代理电脑Cache No Moveable Memory 
              PDU cachenomoveablemoemory = new PDU();   
              cachenomoveablemoemory.add(new VariableBinding(new OID(new int[] {  1,3,6,1,2,1,25,2,3,1,6,5 }))); 
              cachenomoveablemoemory.setType(PDU.GET);   
              readResponse(sendPDU(cachenomoveablemoemory));
              
              
              
              //设置设备代理电脑Code and Data Memory: 
              PDU memory = new PDU();   
              memory.add(new VariableBinding(new OID(new int[] { 1,3,6,1,2,1,25,2,3,1,6,6 }))); 
              memory.setType(PDU.GET);   
              readResponse(sendPDU(memory));
              
              
              //设置设备代理内存使用
              PDU usedmemory = new PDU();   
              usedmemory.add(new VariableBinding(new OID(new int[] {   1,3,6,1,2,1,25,5,1,1,2,1   }))); 
              usedmemory.setType(PDU.GETNEXT);   
              readResponse(sendPDU(usedmemory));
              
              
              //设置设备代理电脑CPU使用
              PDU cpu = new PDU();   
              cpu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,5,1,1,1,1}))); 
              cpu.setType(PDU.GETNEXT);   
              readResponse(sendPDU(cpu));
              
              //设置设备代理电脑系统服务
              PDU sysSrv = new PDU();   
              sysSrv.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,7  }))); 
              sysSrv.setType(PDU.GET);   
              readResponse(sendPDU(sysSrv));
              
              //设置设备代理电脑RAM空闲空间
              PDU ramFree = new PDU();   
              ramFree.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,2,0  }))); 
              ramFree.setType(PDU.GETNEXT);   
              readResponse(sendPDU(ramFree)); 
              //设置代理电脑的虚拟内存
              PDU vmmemory = new PDU();   
              vmmemory.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,2,1,3  }))); 
              vmmemory.setType(PDU.GETNEXT);   
              readResponse(sendPDU(vmmemory));
              //设置代理电脑的进程数量
              PDU processNum = new PDU();   
              processNum.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,1,60 }))); 
              processNum.setType(PDU.GETNEXT);   
              readResponse(sendPDU(processNum));
              
              PDU systemDate = new PDU();   
              systemDate.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,25,1,2  }))); 
              systemDate.setType(PDU.GETNEXT);   
              readResponse(sendPDU(systemDate));
              
              
              
       }   
       
  
          
      /**
       * 获取设备响应信息
       * @param respEvnt
       */
       public void readResponse(ResponseEvent respEvnt) {   
  
  
              if (respEvnt != null && respEvnt.getResponse() != null) {   
  
                     @SuppressWarnings("unchecked")
					Vector<VariableBinding> recVBs = respEvnt.getResponse()   
  
                                   .getVariableBindings();   
                     for (int i = 0; i < recVBs.size(); i++) {   
  
                            VariableBinding recVB = recVBs.elementAt(i);   
  
                            System.out.println(recVB.getOid() + " : " + recVB.getVariable());   
  
                     }   
  
              }   
  
       }   
  
          
  
       public static void main(String[] args) {   
  
              try {   
  
            	     SnmpUtils util = new SnmpUtils();   
                     //
                     util.initComm();   
  
                     util.setPDU();   
  
                     util.getPDU();   
  
              } catch (IOException e) {   
  
                     e.printStackTrace();   
  
              }   
  
       }   
  
}   

 测试显示结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值