| Salut
j ai moi aussi a faire a peu prés la même chose que toi en java. J ai commencer ce matin et pour faire des test j ai installer l agent snmp de windows et j ai ete la http://www.snmp4j.org/doc/ pour avoir un petit exemple d utilisation de snmp4j (j ai deja reussi a avoir un peu tout ce que je voulais rien q avec cet example en ayant prealablement ete cherche les oid grave mib browser).
sinon j ai pas importer de mib ds le manager que je suis en train de faire vu que c est ton manager qui communique avec l agent et l agent qui se sert de la mib pour t envoyer des infos. dsl j ai pas plus d info :D
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair | Bonjour
la chanse moi je n'arrive meme pas a executer snmp4j aider moi stp envoie moi ce que tu a fais pour que je comprent merci bp Répondre à lououle | C est a dire tu arrive pas a exécuter snmp4j ? ta bien chargé le snmp4j.jar ? c est quoi ton environnement de développement ? (eclipse , netBean)
sinon pour ce que j ai fai j ai ete dans la doc de snmp4j tu regarde la classe snmp et dedans il y a un bout de code comme exemple pour récupérer la valeur d un oid ta juste a rajouter les import et çà marche normalement.
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair | Bonjour
pour moi je travaille sur eclipse et l'environement c'st linux ubontu et je vais te explique ce que je faisais :
1. je telecharger snmp4j sur le bureau puis je le decomposer
2. je créer un nouveau projrt java puis j'ai coupier les racines de snmp4j dans ce projet (je coupier le fichier org ce trouve dans le chemein suivant: snmp4j/src/org)
3. puis je fais le meme chose pour l'agent snmp4j dans le meme projet (snmp4j + snmp4j-agent + la mib fournit avec l'agent snmp4j)
4. je compiler quelque classes et ça compile mais la classe ajent- snmp4j donne la probleme suivant :
port=161, address=localhost/127.0.0.1
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(libgcj.so.7)
at org.snmp4j.transport.TransportMappings.createTransportMapping(TransportMappings.java:101)
at org.snmp4j.agent.test.TestAgent.initTransportMappings(TestAgent.java:313)
at org.snmp4j.agent.BaseAgent.init(BaseAgent.java:135)
at org.snmp4j.agent.test.TestAgent.main(TestAgent.java:332)
Caused by: java.net.BindException: Adresse déjà utilisée
at gnu.java.net.PlainDatagramSocketImpl.bind(libgcj.so.7)
at java.net.DatagramSocket.bind(libgcj.so.7)
at java.net.DatagramSocket.<init>(libgcj.so.7)
at java.net.DatagramSocket.<init>(libgcj.so.7)
at org.snmp4j.transport.DefaultUdpTransportMapping.<init>(DefaultUdpTransportMapping.java:102)
at java.lang.reflect.Constructor.newInstance(libgcj.so.7)
...4 more
0 [main] ERROR org.snmp4j.transport.TransportMappings - java.lang.reflect.InvocationTargetException
44 [main] DEBUG org.snmp4j.security.Salt - Initialized Salt to 8b0b476c826cfc84.
Exception in thread "main" java.lang.NullPointerException
at java.lang.Object.getClass(libgcj.so.7)
at org.snmp4j.MessageDispatcherImpl.addTransportMapping(MessageDispatcherImpl.java:115)
at org.snmp4j.Snmp.addTransportMapping(Snmp.java:287)
at org.snmp4j.agent.BaseAgent.initSnmpSession(BaseAgent.java:433)
at org.snmp4j.agent.BaseAgent.initMessageDispatcher(BaseAgent.java:429)
at org.snmp4j.agent.BaseAgent.init(BaseAgent.java:136)
at org.snmp4j.agent.test.TestAgent.main(TestAgent.java:332)
est ce que tu peux me détaile ce que tu a fais et tu me donne ton code stp aide moi je suis vraiment perdu ça fait un moi et je suis en retard dans mon stage
merci beaucoup
cordialement Répondre à lououle | Moi je dois juste faire un manager snmp qui se connecte a un agent déjà existant récupérer des données, traps etc...
donc pour ton pb avec l agent snmp4j je peux pas t aider.
sinon j ai juste charger snmp4j.jar ds éclipse (clic droit sur ton projet->propriete , onglet librairies ->add Jars )
Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
TransportMapping transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
USM usm = new USM(SecurityProtocols.getInstance(),
new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
transport.listen();
// setting up target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(1500);
target.setVersion(SnmpConstants.version1);
// creating PDU
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,1})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,2})));
pdu.setType(PDU.GETNEXT);
// sending request
ResponseListener listener = new ResponseListener() {
public void onResponse(ResponseEvent event) {
// Always cancel async request when response has been received
// otherwise a memory leak is created! Not canceling a request
// immediately can be useful when sending a request to a broadcast
// address.
((Snmp)event.getSource()).cancel(event.getRequest(), this);
System.out.println("Received response PDU is: "+event.getResponse());
}
};
snmp.sendPDU(pdu, target, null, listener);
ta jsute a mettre ca ds un main mettre les import qu il faut et c est bon tu peu te co a ton agent snmp mais bon je pense pas que ca va resoudre ton pb ^^
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair | Bonjour
ou tu a trouver le .jar ? moi j'ai que .zip dans www.snmp4j.org!!!!! mais si je le decompose je trouve SNMP4j.jar dans list/lub/SNMP4j!!!!!! donc je essaier de faire ce que tu a fait mais si je fais (clic droit sur mon projet->propriete , build paht ,onglet librairies ->add Jars mas il ne donne une fenetre ou il y a un que je deja créer donc il me donns pas la main pour snmp4j )??????? Répondre à lououle | Copie le .jar ds ton projet comme ca quand tu voudra addjars tu le verra normalement
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair | Quel .jar moi j'ai que .zip mais si je decompose le .zip je trouve plusieurs fichier parmie les fichers il y a le fichier list ou se trouve le fichier lib puis de dant je trouve SNMP4j.zip !! est ce que tu trouve un snmp4j.zip comme ça ?
NB moi ce que je trouve c'est SNMP4j.zip pas snmp4j.zip dans le fichier lib Répondre à lououle |
|
|
|
|
|
| C est a dire tu arrive pas a exécuter snmp4j ? ta bien chargé le snmp4j.jar ? c est quoi ton environnement de développement ? (eclipse , netBean)
sinon pour ce que j ai fai j ai ete dans la doc de snmp4j tu regarde la classe snmp et dedans il y a un bout de code comme exemple pour récupérer la valeur d un oid ta juste a rajouter les import et çà marche normalement.
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair | Bonjour,
merci beaucoup et je suis desoler si je te derange mais parment on parle pas de la meme chargement du snmp4j donc je ve que tu me explique comment tu a importer snmp4j ? est ce que tu travaille sur eclipse? est quant tu a regarder la classe snmp es tu a trouve des bouts de codes tu les coupier dans une classe et tu la executer ou quoi ???
mesri encore Répondre à lououle | Oui je suis bien sous eclipse
je vais t expliquer en détail ma démarche :
-création d un java project.
-copier le snmp4j.jar dans le répertoire de ton projet (dans ton workspace ta un répertoire "utilisateur" ou utilisateur est e nom que tu a choisi a la création du workspace la tu a le repertoire de ton projet)
-clique droit ->propriete onglet librairies ->addJars tu développe ton projet a l aide du "+" tu sélectionne ton jar et <OK>
- pour tester tu peu créer une classe test
et dedans doit y avoir çà :
import java.io.IOException;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.event.ResponseListener;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
//pour du snmpv3
/*USM usm = new USM(SecurityProtocols.getInstance(),
new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);*/
transport.listen();
// setting up target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(1500);
target.setVersion(SnmpConstants.version1);
// creating PDU
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,1})));
pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,2,1,1,2})));
pdu.setType(PDU.GETNEXT);
// sending request
ResponseListener listener = new ResponseListener() {
public void onResponse(ResponseEvent event) {
// Always cancel async request when response has been received
// otherwise a memory leak is created! Not canceling a request
// immediately can be useful when sending a request to a broadcast
// address.
((Snmp)event.getSource()).cancel(event.getRequest(), this);
System.out.println("Received response PDU is: "+event.getResponse());
}
};
snmp.send(pdu, target, null, listener);
}
}
j ai tester ca marche et ca te donne :
Received response PDU is: RESPONSE[requestID=1809038804, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.1.0 = Hardware: x86 Family 15 Model 1 Stepping 2 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]]
dans la console
ceci est a condition que tu est un agent snmp déjà installer en local.
si tu te connecte a un agent sur un autre ordinateur a la ligne :
Address targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
tu remplace 127.0.0.1 par l adresse ip de l ordi sur lequel tu veux tu connecter.
j'ai pris cette api qui est dédiée a la création d un manager et non d un agent
http://www.snmp4j.org/snmp4j-1.9.1e.zip
voila j espère que ça ira :D
Les noix de coco tuent plus d'hommes par an (150) que les requins (10). Répondre à talgair |
|
|
|
|