2017-06-05 3 views
0

J'essaie de créer un agent SNMP4j et j'ai du mal à comprendre le processus correctement. J'ai réussi à créer un agent qui peut être interrogé à partir de la ligne de commande en utilisant snmpwalk. Ce qui me pose problème, c'est de comprendre comment je suis censé mettre à jour les valeurs stockées dans ma MIB implémentée.Comment mettre à jour correctement les valeurs MIB de l'agent SNMP4j

Ce qui suit montre le code approprié, je l'utilise pour créer le MIB (Host-je mettre en place des ressources-MIB)

 agent = new Agent("0.0.0.0/" + port); 
     agent.start(); 
     agent.unregisterManagedObject(agent.getSnmpv2MIB()); 
     modules = new Modules(DefaultMOFactory.getInstance()); 
     HrSWRunEntryRow thisRow = modules.getHostResourcesMib().getHrSWRunEntry() 
       .createRow(oidHrSWRunEntry); 

     final OID ashEnterpriseMIB = new OID(".1.3.6.1.4.1.49266.0"); 

     thisRow.setHrSWRunIndex(new Integer32(1)); 
     thisRow.setHrSWRunName(new OctetString("RunnableAgent")); 
     thisRow.setHrSWRunID(ashEnterpriseMIB); 
     thisRow.setHrSWRunPath(new OctetString("All is good in the world")); // Max 128 characters 
     thisRow.setHrSWRunParameters(new OctetString("Everything is working")); // Max 128 characters 
     thisRow.setHrSWRunType(new Integer32(HrSWRunTypeEnum.application)); 
     thisRow.setHrSWRunStatus(new Integer32(HrSWRunStatusEnum.running)); 

     modules.getHostResourcesMib().getHrSWRunEntry().addRow(thisRow); 

     agent.registerManagedObject(modules.getHostResourcesMib()); 

Cela semble être suffisant pour créer un agent runnable. Ce que je ne comprends pas, c'est comment je suis censé changer les valeurs stockées dans le MIB (comment, par exemple, changer la valeur de HrSWRunStatus). Il semble y avoir quelques manières kludge mais elles ne semblent pas correspondre à la façon dont la bibliothèque est écrite.

Je suis venu à travers de nombreuses références à l'utilisation/remplaçant les méthodes

  • préparer
  • commettras
  • undo
  • nettoyage

Mais ne peut pas trouver des exemples où cela est fait . Toute aide serait reçue avec gratitude.

Répondre

0

En protected void registerManagedObjects(), vous devez faire quelque chose comme new MOMutableColumn(columnId, SMIConstants.SYNTAX_INTEGER, MOAccessImpl.ACCESS_READ_WRITE, null); pour votre HrSWRunStatus. Jetez un oeil à l'exemple TestAgent.java de la source de l'agent SNMP4J.