简体   繁体   English

如何使用snmp4j将值设置为Mib

[英]how to set value to Mib using snmp4j

i'm trying to create simple example of snmp manager and agent. 我正在尝试创建snmp管理器和代理的简单示例。 all i need to do is just read the current value from given OID, write some new value to replace it, and read it back. 我需要做的只是从给定的OID中读取当前值,编写一些新值来替换它,然后将其读回。

my get function working well but my set doesn't. 我的get函数运行良好,但我的集合却无法运行。 in the line: PDU responsePDU = event.getResponse(); 在以下行中: PDU responsePDU = event.getResponse(); responsePDU equal to null and i don't understand why? responsePDU等于null,我不明白为什么? any help will be very welcome! 任何帮助将非常欢迎!

    public ResponseEvent set(OID oid,String val) throws IOException 
{
    PDU pdu = new PDU();
    VariableBinding varBind = new VariableBinding(oid,new OctetString(val));
    pdu.add(varBind);
    pdu.setType(PDU.SET);
    pdu.setRequestID(new Integer32(1));
    Target target=getTargetForWrite();

    ResponseEvent event = snmp.set(pdu, target);
    if(event != null)
    {
      System.out.println("\nResponse:\nGot Snmp Set Response from Agent");
      System.out.println("Snmp Set Request = " + event.getRequest().getVariableBindings());
      PDU responsePDU = event.getResponse();
      System.out.println("\nresponsePDU = "+responsePDU);
      if (responsePDU != null)
      {
        int errorStatus = responsePDU.getErrorStatus();
        int errorIndex = responsePDU.getErrorIndex();
        String errorStatusText = responsePDU.getErrorStatusText();
        System.out.println("\nresponsePDU = "+responsePDU);
        if (errorStatus == PDU.noError)
        {
          System.out.println("Snmp Set Response = " + responsePDU.getVariableBindings());
        }
        else
        {
          System.out.println("errorStatus = "+responsePDU);
          System.out.println("Error: Request Failed");
          System.out.println("Error Status = " + errorStatus);
          System.out.println("Error Index = " + errorIndex);
          System.out.println("Error Status Text = " + errorStatusText);
        }
       }

      return event;
    }
    throw new RuntimeException("GET timed out");
}



    private Target getTargetForWrite()
{
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("private"));
    target.setVersion(SnmpConstants.version2c);
    target.setAddress(GenericAddress.parse(address));
    target.setRetries(2);
    target.setTimeout(1500);

    return target;
}

need to set the community as public 需要将社区设为公共

private Target getTargetForWrite()
{
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));\\<--- 
    target.setVersion(SnmpConstants.version2c);
    target.setAddress(GenericAddress.parse(address));
    target.setRetries(2);
    target.setTimeout(1500);

    return target;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM