`
longgangbai
  • 浏览: 7340170 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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();   
  
              }   
  
       }   
  
}   

 测试显示结果如下:

 

分享到:
评论

相关推荐

    SNMP安装包(window xp , server 都支持).zip

    SNMP,全称为“简单网络管理协议”(Simple Network Management Protocol),是一种广泛应用于网络设备管理的标准协议。它允许网络管理员远程监控和管理网络设备,如路由器、交换机、服务器等。在Windows XP和Server...

    windows10/11-snmp离线安装包文件-离线安装snmp方案

    在Windows 10或11操作系统中,SNMP服务可以用来管理和监控本地系统以及网络中的其他SNMP兼容设备。 离线安装SNMP通常适用于没有互联网连接或者安全策略禁止在线安装的环境。这个"windows10/11-snmp离线安装包文件...

    snmp模拟设备

    在这个主题中,“snmp模拟设备”指的是使用特定工具或软件来创建一个虚拟的SNMP设备,这个设备可以模仿真实网络设备的行为,以便于进行本地测试、调试SNMP应用或验证配置的正确性。 描述中提到的“snmpwalk文件”是...

    基于SNMP的Windows远程管理

    本篇文章将基于一份名为“基于SNMP的Windows远程管理”的教学材料,深入探讨SNMP在Windows环境下的应用实践,包括其基本概念、安装配置过程以及具体的使用案例。 #### 二、SNMP基础知识回顾 1. **SNMP**:SNMP是一...

    SNMP++在windows及linux中编译所需内容.zip

    SNMP++是SNMP的C++实现,提供了一种高级接口来处理SNMP请求和响应,它增加了面向对象的设计,使得开发者能更方便地集成到他们的应用程序中。在Windows和Linux环境下编译SNMP++时,通常需要以下步骤和组件: 1. **...

    端口协议大全

    - **应用场景**:尽管已被更安全的SSH取代,但在某些老旧系统中仍然使用。 #### 14. SMTP - 简单邮件传输协议 - **功能概述**:SMTP(Simple Mail Transfer Protocol)是用于在互联网上发送电子邮件的标准协议。 - ...

    hostmonitor官方说明书(英文版)

    Test Lists可以包括多种类型的测试,例如ping测试、HTTP请求、SNMP查询等,它们能帮助用户全面了解系统的健康状况。 3. **Test List Properties**:这部分详细描述了如何配置和定制测试列表。用户可以设置检查频率...

    端口 总结

    本文将详细介绍一系列常见的端口号及其对应的服务,帮助读者更深入地理解端口的概念以及它们在网络通信中的应用。 **1. 0号端口**:通常不被分配,用于特殊的系统用途。 **2. 1号端口**:早期的网络操作系统中用于...

    citrix 中文管理操作手册

    安装和配置简单网络管理协议 (SNMP) 服务 128 受信任的服务器配置 129 保护数据存储 129 Microsoft Access 129 Microsoft SQL Server 129 Microsoft SQL Server 2005 Express Edition 130 Oracle 130 IBM DB2 130 ...

    各种代码指令各种代码指令各种代码指令

    **应用场景**:在早期的Unix系统中,如SGI Irix,tcpmux被广泛使用。它可以提供多种服务,如IP GUEST、UUCP、NUUCP等。 ##### 3. Echo Service **描述**:Echo服务是一种简单的网络服务,其作用是接收来自客户端的...

    HP Systems Insight Manager 5.3 安装与配置指南-中文适用于HP-UX

    - **自签名证书**:用于内部测试和开发环境,但不建议在生产环境中使用。 - **X应用程序安全性**:对于基于X Window的GUI应用,提供了安全的显示协议。 - **管理防火墙后面的服务器**:支持通过代理服务器或跳板主机...

    一些常见端口功能对照表

    - **描述**:在计算机系统中,端口0通常被系统保留用于某些特定的系统服务或测试目的。 - **用途**:主要用于系统内部调试或临时占位。 ##### 2. **TCP Multiplexer (tcpmux)** - **端口号**:1 - **描述**:...

    各个端口详解

    - **应用场景**:在Windows系统中实现SMB共享、Samba等服务。 #### 143号端口(IMAP v2) - **邮件服务**:用于IMAP邮件服务。 - **安全特性**:相比POP3更安全。 - **版本差异**:现代系统中推荐使用IMAP4。 ####...

    IIS6.0 IIS,互联网信息服务

    四、在Vista系统中安装IIS7.0相对于早先的版本,IIS 7.0 带来了许多引人注目的新特色新功能,比如基于 Microsoft .NET Framework 的全局配置文件,可简单地通过文本编辑器或 Microsoft Visual Studio 编辑;...

    知名端口号列表.txt

    在互联网技术中,端口的概念具有双重含义:一方面指的是物理层面上的连接接口,例如ADSL调制解调器、集线器、交换机、路由器等设备上的RJ-45端口或SC端口等;另一方面则是指逻辑意义上的端口,主要应用于TCP/IP协议...

Global site tag (gtag.js) - Google Analytics