snmp4j获取数据实例
来源:互联网 发布:广数980tdb编程教程 编辑:程序博客网 时间:2024/04/29 22:26
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();
}
}
}
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获取数据实例
- snmp4j获取数据实例
- snmp4j获取数据实例
- SNMP4J 异步获取数据 GETBULK
- SNMP4J TableUtils 异步获取数据
- snmp4j获取数据实例(一,Linux SNMP OID’s for CPU,Memory a)
- snmp4j获取数据实例(一,Linux SNMP OID’s for CPU,Memory a)
- snmp4j获取mib信息的实例(测试成功)
- snmp4j获取表
- 使用SNMP4J获取oid
- snmp4j获取交换机信息
- SNMP4J开发trap监听实例
- SNMP4J
- SNMP4J
- SNMP4J
- 使用SNMP4J获取OID的过程
- 利用snmp4j获取CPU,内存状态
- ajax获取本地数据实例
- 最小化安装 Ubuntu
- 今天终于动下手开博了.
- prototype.js1.5.0开发者手册 译文+添加注释(二)
- 双机直连网线做法及网线制作知识
- 从hbm文件生成ddl
- snmp4j获取数据实例
- Eye图像浏览器
- WPF部分信任安全
- Bug管理系统完整截图3
- 什么是存储过程,使用存储过程的优点
- Zipal
- 初级的学习 和 高级的学习
- 反射技术是程序员转型成为系统架构师的必经之路?
- 翻译《real-time 3d terrain engines using C++ and DX9 》(7)