我现在已经可以get mib库了.但如果我想set某个oid的话,我现在的做法如下:
........
PDU pdu=new PDU();
//变量绑定
VariableBinding vb=new VariableBinding(new OID(text.getText()));
vb.setVariable(new OctetString("Right here, right now"));
pdu.add(vb);
//设置pdu动作
pdu.setType(PDU.SET);
//发送pdu获取信息并返回一个响应pdu
ResponseEvent response=snmp.send(pdu, target);
//提取响应pdu
PDU responsePdu=response.getResponse();
if(responsePdu!=null)
{
if(responsePdu.getErrorIndex()==responsePdu.noError&&responsePdu.getErrorStatus()==responsePdu.noError)
{
System.out.println(responsePdu);
}
else {
System.out.println("get error:"+responsePdu.getErrorStatusText());
}
但他始终报错
那么set一个oid该怎么做呢?
........
PDU pdu=new PDU();
//变量绑定
VariableBinding vb=new VariableBinding(new OID(text.getText()));
vb.setVariable(new OctetString("Right here, right now"));
pdu.add(vb);
//设置pdu动作
pdu.setType(PDU.SET);
//发送pdu获取信息并返回一个响应pdu
ResponseEvent response=snmp.send(pdu, target);
//提取响应pdu
PDU responsePdu=response.getResponse();
if(responsePdu!=null)
{
if(responsePdu.getErrorIndex()==responsePdu.noError&&responsePdu.getErrorStatus()==responsePdu.noError)
{
System.out.println(responsePdu);
}
else {
System.out.println("get error:"+responsePdu.getErrorStatusText());
}
但他始终报错
那么set一个oid该怎么做呢?
http://blog.csdn.net/stevexk/archive/2007/09/15/1786267.aspx
我没写完整,报这个错是因为responsePdu==null
try {
//建立一个udp地址,被管理设备的udp
String ip="172.16.10.254";
Address targetAddress=GenericAddress.parse("udp:"+ip+"/161");
//建立一个snmp传输消息接口
TransportMapping transport=new DefaultUdpTransportMapping();
Snmp snmp=new Snmp(transport);
transport.listen();
//创建target
CommunityTarget target=new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(1);//重复次数
target.setTimeout(5000);//超时
target.setVersion(SnmpConstants.version2c);//版本
//创建pdu,snmp协议的数据单元
PDU pdu=new PDU();
//变量绑定
VariableBinding vb=new VariableBinding(new OID(text.getText()));
pdu.add(vb);
//设置pdu动作;
pdu.setType(PDU.GETNEXT);
//发送pdu获取信息并返回一个响应pdu
ResponseEvent response=snmp.send(pdu, target);
//提取响应pdu
PDU responsePdu=response.getResponse();
//获取响应方的地址
Address peerAddress=response.getPeerAddress();
//分析响应pdu包
if(responsePdu!=null)
{
if(responsePdu.getErrorIndex()==responsePdu.noError&&responsePdu.getErrorStatus()==responsePdu.noError)
{
String pause=response.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(responsePdu);
System.out.println(oid);
VariableBinding vb2=new VariableBinding(new OID(oid),new OctetString("aaaa"));
//pdu.clear();//用同一个pdu就必须要把相同的绑定清除掉
PDU pdu2=new PDU();
pdu2.add(vb2);
pdu2.setType(PDU.SET);
response=snmp.send(pdu2, target);
responsePdu=response.getResponse();
System.out.println(responsePdu);
}
else {
System.out.println("get error:"+responsePdu.getErrorStatusText());
}
}
else {
System.out.println("get response error");
}
//snmp.close();
} catch (IOException e) {
e.printStackTrace(); }