2016-06-05 1 views
0

Je suis en train de créer un exemple simple de gestionnaire snmp et agent. tout ce que je dois faire est de simplement lire la valeur actuelle de l'OID donné, écrire une nouvelle valeur pour le remplacer, et le relire.comment définir la valeur à Mib en utilisant snmp4j

ma fonction get fonctionne bien mais pas mon ensemble. dans la ligne: PDU responsePDU = event.getResponse(); responsePDU égal à null et je ne comprends pas pourquoi? toute aide sera la bienvenue!

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; 
} 
+0

Ne vous avez besoin d'une réponse résultant d'un snmp.send au lieu d'un snmp.set pour exécuter le getResponse à partir? Juste deviner, ne pas travailler avec snmp4j en pratique. Peut-être aussi fournir les importations de «choses» externes référencées aideraient les connaissants à vous aider plus facilement. – Dilettant

+0

Je commence juste à apprendre snmp mais comme je comprends snmp.send utilisé pour la commande get et snmp.set pour la commande set –

Répondre

0

besoin de mettre la communauté publique

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; 
}