snmp4j获取数据实例

原创 2007年09月15日 13:31:00
import java.io.IOException;
import java.net.InetAddress;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class TestOp ...{

    
public static void main(String[] args)
    
...{
        
try ...{
            Snmp snmp 
= new Snmp(new DefaultUdpTransportMapping());
            CommunityTarget target 
= new CommunityTarget();//agent对象
            target.setCommunity(
new OctetString("public"));//设置共同体名,没发现设置RWCommnity的方
                                                                                                      //法,大概只能设一个.
            target.setVersion(SnmpConstants.version2c);//设置版本
            target.setAddress(
new UdpAddress("127.0.0.1/161"));//设置IP地址和端口号,这里竟然用'/'来分  
                                                                                                   //隔,当初确实没有料到,JDOC的说明等于没有.
            target.setRetries(
1);                      //设置重试次数
            target.setTimeout(
5000);             //设置超时
            
            snmp.listen();                                 //监听
            PDU request 
= new PDU();         //new request PDU包
            
//set pud type and set oid
            request.setType(PDU.GET);        //设置PDU类型,
            request.add(
new VariableBinding(new OID(".1.3.6.1.2.1.1.1.0"))); //OID添加
            request.add(
new VariableBinding(new OID(".1.3.6.1.2.1.1.2.0")));
            System.out.println(
"request UDP:" + request);//请求包内内容输出,
            PDU response 
= null;//定义response包
            ResponseEvent responseEvent 
= snmp.send(request, target); //发出request PDU
            //接收response PDU
            response 
= responseEvent.getResponse();
           
                //response PDU包解析
            
if(response!=null)...{
                
if(response.getErrorIndex()==response.noError&&response.getErrorStatus()==response.noError)...{
                    System.out.println(
"no error.");
                    String pause
=responseEvent.getResponse().getVariableBindings().toString();
                    String getvalue
=pause.substring( pause.indexOf("")+2,pause.indexOf(']'));
                    String oid
=pause.substring(pause.indexOf("VBS[")+2,pause.indexOf("=")-1);
                    System.out.println(oid
+"::");
                    System.out.println(response);
                    
                }
else...{
                    System.out.println(
"get error:"+response.getErrorStatusText());
                }

                
            }
else...{
                System.out.println(
"get response error");
            }

            
            
        }
 catch (IOException e) ...{
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
    }

}

 

执行结果:
request UDP:GET[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Null; 1.3.6.1.2.1.1.2.0 = Null]]
no error.
1.3.6.1.2.1.1.1.0::
RESPONSE[requestID=18464556, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Hardware: x86 Family 6 Model 14 Stepping 8 AT/AT COMPATIBLE - Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free); 1.3.6.1.2.1.1.2.0 = 1.3.6.1.4.1.311.1.1.3.1.1]]

这里response.getVariableBindings()返回的是VaribleBinding数组,应该根据名个VaribleBinding对象解析得到OID值.所以上面的程序稍微有点问题.

上面的程序是一个GET的操作,GETNEXT,SET,GETBULK的操作也相似,
在snmp4j Jdoc中,

org.snmp4j.Snmp下面有较为详细的例子可以参考.

snmp4j获取交换机信息

package com.jhw.adm.comclient.protocol.snmp;import java.io.IOException;import org.snmp4j.CommunityTa...
  • dudefu011
  • dudefu011
  • 2016年03月17日 18:04
  • 2174

java利用snmp4j包来读取snmp协议数据

java利用snmp4j包来读取snmp协议数据,很简单的一个流程,就是利用java来读取运行snmp协议的数据,例如服务器、PC机或者路由器等运行了snmp协议的设备。 snmp协议是什么呢?...
  • JoyTan1209
  • JoyTan1209
  • 2016年02月29日 14:04
  • 1182

java利用snmp4j包来读取snmp协议数据(Manager端)

1 snmp简单介绍 java利用snmp4j包来读取snmp协议数据,很简单的一个流程,就是利用java来读取运行snmp协议的数据,例如服务器、PC机或者路由器等运行了snmp协议的设备。 snm...
  • DaveBobo
  • DaveBobo
  • 2016年05月03日 23:10
  • 9478

SNMP4J 异步获取数据 GETBULK

package com.sdstc.maxvalue.nms.services.cheng; import java.util.ArrayList; import java.util.Li...
  • lanyingtianshiabc
  • lanyingtianshiabc
  • 2015年03月12日 15:06
  • 1526

利用SNMP4J实现 Snmp Trap 完整例子

利用SNMP4J实现 Snmp Trap 完整例子 ————————– ———Snmp4J源码和jar包路径——————————Snmp v1 , v2c, v3 版本发送 Snmp Trap:...
  • gaohaicheng123
  • gaohaicheng123
  • 2017年09月13日 09:54
  • 286

SNMP4J TableUtils 异步获取数据

package com.sdstc.maxvalue.nms.services.cheng; import java.util.concurrent.CountDownLatch; import ...
  • lanyingtianshiabc
  • lanyingtianshiabc
  • 2015年03月12日 15:08
  • 1321

snmp 协议开发之SNMP4J 简单封装

源代码项目结构: snmp.comm包:主要展示OID 和对应的实体对象 snmp_conf.properties配置文件 # ROOT OID # Internet Part ...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2015年07月09日 14:20
  • 1177

snmp4j 中的中文字符输出问题

snmp4j 中的中文字符输出问题, 不在于解码,而在于输出。 在使用snmp4j 通过 ip 和 OID来获取 snmp代理的 网络接口描述时, 在snmp4j-1.11.1上测试,当遇到中文或者编...
  • perfectfield
  • perfectfield
  • 2010年07月20日 12:53
  • 1231

snmp4j获取表

public class RouterTable { public RouterTable(){ } public synchronized static String collector(Strin...
  • longzuolinlzl
  • longzuolinlzl
  • 2009年12月28日 16:12
  • 520

SNMP4j实现同步和异步的Walk的示例

目录: 环境参数 代码示例 同步WALK 异步WALK [一]、环境参数 jdk 1.6.0_18 snmp4j 1.11.3 [二]、代码示例 ...
  • CareChere
  • CareChere
  • 2016年05月24日 10:16
  • 999
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:snmp4j获取数据实例
举报原因:
原因补充:

(最多只允许输入30个字)