天天看点

snmp4j获取数据实例

snmp4j获取数据实例

import  java.io.IOException;

snmp4j获取数据实例

import  java.net.InetAddress;

snmp4j获取数据实例
snmp4j获取数据实例

import  org.snmp4j.CommunityTarget;

snmp4j获取数据实例

import  org.snmp4j.PDU;

snmp4j获取数据实例

import  org.snmp4j.Snmp;

snmp4j获取数据实例

import  org.snmp4j.event.ResponseEvent;

snmp4j获取数据实例

import  org.snmp4j.mp.SnmpConstants;

snmp4j获取数据实例

import  org.snmp4j.smi.OID;

snmp4j获取数据实例

import  org.snmp4j.smi.OctetString;

snmp4j获取数据实例

import  org.snmp4j.smi.UdpAddress;

snmp4j获取数据实例

import  org.snmp4j.smi.VariableBinding;

snmp4j获取数据实例

import  org.snmp4j.transport.DefaultUdpTransportMapping;

snmp4j获取数据实例
snmp4j获取数据实例
snmp4j获取数据实例

public   class  TestOp  ... {

snmp4j获取数据实例
snmp4j获取数据实例

    public static void main(String[] args)

snmp4j获取数据实例
snmp4j获取数据实例

    ...{

snmp4j获取数据实例
snmp4j获取数据实例

        try ...{

snmp4j获取数据实例

            Snmp snmp = new Snmp(new DefaultUdpTransportMapping());

snmp4j获取数据实例

            CommunityTarget target = new CommunityTarget();//agent对象

snmp4j获取数据实例

            target.setCommunity(new OctetString("public"));//设置共同体名,没发现设置RWCommnity的方

                                                                                                      //法,大概只能设一个.

snmp4j获取数据实例

            target.setVersion(SnmpConstants.version2c);//设置版本

snmp4j获取数据实例

            target.setAddress(new UdpAddress("127.0.0.1/161"));//设置IP地址和端口号,这里竟然用'/'来分  

                                                                                                   //隔,当初确实没有料到,JDOC的说明等于没有.

snmp4j获取数据实例

            target.setRetries(1);                      //设置重试次数

snmp4j获取数据实例

            target.setTimeout(5000);             //设置超时

snmp4j获取数据实例
snmp4j获取数据实例

            snmp.listen();                                 //监听

snmp4j获取数据实例

            PDU request = new PDU();         //new request PDU包

snmp4j获取数据实例

            //set pud type and set oid

snmp4j获取数据实例

            request.setType(PDU.GET);        //设置PDU类型,

snmp4j获取数据实例

            request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.1.0"))); //OID添加

snmp4j获取数据实例

            request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.2.0")));

snmp4j获取数据实例

            System.out.println("request UDP:" + request);//请求包内内容输出,

snmp4j获取数据实例

            PDU response = null;//定义response包

snmp4j获取数据实例

            ResponseEvent responseEvent = snmp.send(request, target); //发出request PDU

snmp4j获取数据实例

            //接收response PDU

snmp4j获取数据实例

            response = responseEvent.getResponse();

snmp4j获取数据实例

                //response PDU包解析

snmp4j获取数据实例
snmp4j获取数据实例

            if(response!=null)...{

snmp4j获取数据实例
snmp4j获取数据实例

                if(response.getErrorIndex()==response.noError&&response.getErrorStatus()==response.noError)...{

snmp4j获取数据实例

                    System.out.println("no error.");

snmp4j获取数据实例

                    String pause=responseEvent.getResponse().getVariableBindings().toString();

snmp4j获取数据实例

                    String getvalue=pause.substring( pause.indexOf("= ")+2,pause.indexOf(']'));

snmp4j获取数据实例

                    String oid=pause.substring(pause.indexOf("VBS[")+2,pause.indexOf("=")-1);

snmp4j获取数据实例

                    System.out.println(oid+"::");

snmp4j获取数据实例

                    System.out.println(response);

snmp4j获取数据实例
snmp4j获取数据实例
snmp4j获取数据实例

                }else...{

snmp4j获取数据实例

                    System.out.println("get error:"+response.getErrorStatusText());

snmp4j获取数据实例

                }

snmp4j获取数据实例
snmp4j获取数据实例
snmp4j获取数据实例

            }else...{

snmp4j获取数据实例

                System.out.println("get response error");

snmp4j获取数据实例

            }

snmp4j获取数据实例
snmp4j获取数据实例
snmp4j获取数据实例
snmp4j获取数据实例

        } catch (IOException e) ...{

snmp4j获取数据实例

            // TODO Auto-generated catch block

snmp4j获取数据实例

            e.printStackTrace();

snmp4j获取数据实例

        }

snmp4j获取数据实例
snmp4j获取数据实例

    }

snmp4j获取数据实例

}

snmp4j获取数据实例

执行结果:

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下面有较为详细的例子可以参考.      

继续阅读