IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

Utilisation de SNMP4J


Sujet :

Concurrence et multi-thread Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Utilisation de SNMP4J
    Bonjour,

    Etant en stage, je travaille actuellement sur le protocole SNMP.
    J'ai bien téléchargé l'api java snmp4J mais cependant je n'arrive pas à l'utiliser. J'ai bien récupérer l'exemple à l'adresse http://www.snmp4j.org/doc/org/snmp4j/Snmp.html , cependant ca ne marche pas sur ma machine.
    L'exemple utilisant snmpv3, j'ai voulu simplifier en reprenant la version 1, mais je n'obtiens aucune réponse ...

    Merci de votre aide, je bloque completement la ...

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Bonjour,

    1- Pour la version 3 es tu sur qu elle soit bien supporté par le "machin" interogé ?

    2- As tu bien activé le service SNMP sur le machin interogé ?

    3- Peux tu me faire voir ce que tu as fait ?

    4- Avec les messages d erreur si y en a.

    [edit] et bien sur as tu bien ouvert les port du protociole SNMP sur les differents firewall ? (161 et 162 en UDP de memoire)
    "vaste programme"

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Non la version 3 n'est pas supporté.
    je travaille sous linux et le service SNMP est bien activé puisque cela fonctionne quand j'utilise les commandes snmpwalk et snmpget dans le terminal avec les versiosn 1 et 2. Pour la même raison, les ports 161 et 162 sont bien ouverts, j'arrive à communiquer avec toutes les autres machines de mon réseau

    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class test {
     
        public static void main(String[] args) throws IOException
        {
            Address targetAddress = GenericAddress.parse("udp:10.10.10.25/161");
            TransportMapping transport = new DefaultUdpTransportMapping();
            Snmp snmp = new Snmp(transport);
            USM usm = new USM(SecurityProtocols.getInstance(),
                new OctetString(), 0);
            SecurityModels.getInstance().addSecurityModel(usm);
            transport.listen();
            snmp.listen();
     
            CommunityTarget target = new CommunityTarget();
            target.setAddress(targetAddress);
            target.setRetries(1);
            target.setTimeout(5000);
            target.setVersion(SnmpConstants.version1);
            target.setCommunity(new OctetString());
     
            // create the PDU        
            PDUv1 pdu = new PDUv1();
            pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1")));
            pdu.setType(PDU.GET);
            System.out.println("pdu    " + pdu.toString());
     
            // send the PDU
            ResponseEvent response = snmp.send(pdu, target);
            System.out.println("response   " + response.toString());
            // extract the response PDU (could be null if timed out)
            PDU responsePDU = response.getResponse();
            System.out.println("responsePdu = " + responsePDU);
            // extract the address used by the agent to send the response:
            //Address peerAddress = response.getPeerAddress();
        }
    }
    Et donc avec ce code là , il me renvoie une réponse nulle, ce qui veut dire qu'il y a eu un timeout, et donc que la machine n'a pas pu repondre. Je travaille que sur ma propre machine pour le moment et ca ne fonctionne pas ...

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Pourrais tu encapsuler le code dans justement la balise code (le diese quand tu rediges) stp, la c'est chaud a lire.

    Par contre si tu test sur la boucle locale en 127.0.0.1 ? ca fait pareil ?
    "vaste programme"

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    désolé je suis nouvelle sur le forum et je ne connai pas encore les balises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class test {
     
    public static void main(String[] args) throws IOException
    {
    Address targetAddress = GenericAddress.parse("udp:10.10.10.25/161");
    TransportMapping transport = new DefaultUdpTransportMapping();
    Snmp snmp = new Snmp(transport);
    USM usm = new USM(SecurityProtocols.getInstance(),
    new OctetString(), 0);
    SecurityModels.getInstance().addSecurityModel(usm);
    transport.listen();
    snmp.listen();
     
    CommunityTarget target = new CommunityTarget();
    target.setAddress(targetAddress);
    target.setRetries(1);
    target.setTimeout(5000);
    target.setVersion(SnmpConstants.version1);
    target.setCommunity(new OctetString());
     
    // create the PDU
    PDUv1 pdu = new PDUv1();
    pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1")));
    pdu.setType(PDU.GET);
    System.out.println("pdu " + pdu.toString());
     
    // send the PDU
    ResponseEvent response = snmp.send(pdu, target);
    System.out.println("response " + response.toString());
    // extract the response PDU (could be null if timed out)
    PDU responsePDU = response.getResponse();
    System.out.println("responsePdu = " + responsePDU);
    // extract the address used by the agent to send the response:
    //Address peerAddress = response.getPeerAddress();
    }
    }
    Et donc oui ca fait pareil sur la boucle locale, ca ne marche pas , il me renvoie toujours reponse nulle ...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Réussi ...
    Bon finalement, j'ai réussi, j'arrive à accèder à toutes les machines en snmpv1.

    Par contre, j'aimerai savoir s'il était possible de faire la même chose qu'avec snmpwalk, c'est à dire de récupérer un ensemble de valeurs d'une branche de la mib: par exemple, si on veut récupérer toutes les informations du groupe system.

    J'ai essayé de mettre uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pdu.add(new OID("1.3.6.1.2.1.1"))
    mais cela me renvoie juste le premier champ c est à 1.3.6.1.2.1.1.0 qui correspond à sysDescr.

    J'aimerai pouvoir tout récupérer sans etre obliger de renseigner toutes les OID une par une.

  7. #7
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Ca je ne crois pas ?

    par contre une OID peut egalement se declarer avec un tableau d entier comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new OID(new int[] {1,3,6,1,2,1,1,1})
    rien t empreche de boucler sur une des cases par exemple pour avoir une miste d OID

    P.S. : c'est quoi qui marchaitr pas ?
    "vaste programme"

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Merci pour l'idée de boucler sur une case, ca fonctionne nickel.

    Et ce qui ne marchait pas c'était le traitement de la réponse, j'ai alors changer le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
     
     
     
    // 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());
     
    		for (int i = 0 ; i < event.getResponse().size(); i ++ )		
    		{System.out.println(event.getResponse().get(i).toString());}	
     
    	}
    }
    snmp.sendPDU(pdu,target,null,listener);

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut set et traps ??
    Je crois que je suis vraiment pas doué !

    Maintenant j'arrive à récuperer les valeurs des OID de la mib sans trop de problèmes.
    J'aimerai alors pouvoir effectuer des commandes SET sur une de ces variables. mais que faut il écrire pour cela ?

    De même, comment faire pour envoyer des traps...

    désolé, mais je suis complètement perdue dans cette api java .

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut !

    Je suis également en stage et j'ai besoin de récupérer les variables de mibs grâce a l'api snmp4j. Mais je ne suis pas bien sûr de l'avoir bien installé. Y a t-il des fichiers à copier dans les dossiers d'installations de java ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut juste les packages
    non non, il n'y a rien besoin d'autre. il faut juste installer les packages snmp et ca devrait fonctionner ...

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Mais qu'est ce que t'appelle installer les packages ?

    J'ai téléchargé puis décompressé snmp4j-1.8.2.zip sur mon bureau. Ensuite pour la compilation il y a bien des fichiers jar à rajouter dans les classpaths non ?

    merci de m'aider

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 38
    Points
    38
    Par défaut ah oui ...
    oui, il faut rajouter les 2 packages log4j .jar et SNMP4J.jar dans le classpath.
    Pour cela, tu clique à droite sur ton projet, puis build path puis configure build path.
    La dans l onglet, librairies, tu fais add Extarnal Jars...

    voila, normalement, tu devrais pourvoir te servir de l'api.

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    J'ai compilé sans problème le fichier MultiThreadedTrapReceiver.java qui se trouve dans test. Par contre l'éxécution me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    java.net.BindException: Address already in use: Cannot bind
    	at java.net.PlainDatagramSocketImpl.bind0(Native Method)
    	at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82)
    	at java.net.DatagramSocket.bind(DatagramSocket.java:368)
    	at java.net.DatagramSocket.<init>(DatagramSocket.java:210)
    	at java.net.DatagramSocket.<init>(DatagramSocket.java:261)
    	at org.snmp4j.transport.DefaultUdpTransportMapping.<init>(Unknown Source)
    	at org.snmp4j.test.MultiThreadedTrapReceiver.init(Unknown Source)
    	at org.snmp4j.test.MultiThreadedTrapReceiver.run(Unknown Source)
    	at org.snmp4j.test.MultiThreadedTrapReceiver.main(Unknown Source)
    et j'ai une question, c'est comment compiler l'exemple qui se trouve dans http://www.snmp4j.org/doc/org/snmp4j/Snmp.html s'il n'a pas de void main ?

    Merci.

  15. #15
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par Rambouille
    et j'ai une question, c'est comment compiler l'exemple qui se trouve dans http://www.snmp4j.org/doc/org/snmp4j/Snmp.html s'il n'a pas de void main ?
    Un fichier java n'a pas besoin de main pour être compilé... Simplement un fichier sans main ne sera pas "exécutable" directement. Mais il peut parfaitement être utilisé par d'autres fichiers source de ton application.

    Allez, un exemple: Config.java sans main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Config {
       private static String configString = "Une phrase de test";
       public static String getConfigString() { return configString; }
    }
    Et un fichier Prog.java contenant le main et faisant appel à la classe Config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Prog {
       public static void main(String[] args) {
          System.out.println(Config.getConfigString());
       }
    }
    Tu peux compiler ton fichier Config.java sans que celui-ci n'aie de méthode main... ce fichier a tout de même une utilité dans ton programme, car ses méthodes sont appelées par d'autres classes
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  16. #16
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    D'accord, mais dans ce cas, quelle est la classe contenant le main qui utilise le code donné dans la javadoc ? et quels sont les import nécessaires pour utiliser ce code ?

  17. #17
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut SNPM JAVA snmp4j
    bonjour,

    je fai un stage dont la 1ere party est de cree une application qui recoi les trape (alarmes) des element reseau, et j'ai telechargé l'API snmp4j mai je n sai pa cmt l'utiliser pr realiser mon travail, et la j'avance preske pas.

    je demande si quelqu'un peu m' expliké un peu en generale cmt ca fonctionne, et si possible me donne un exemple d'un manager snmp en java.
    merci

  18. #18
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par alaaaddine
    bonjour,

    je fai un stage dont la 1ere party est de cree une application qui recoi les trape (alarmes) des element reseau, et j'ai telechargé l'API snmp4j mai je n sai pa cmt l'utiliser pr realiser mon travail, et la j'avance preske pas.

    je demande si quelqu'un peu m' expliké un peu en generale cmt ca fonctionne, et si possible me donne un exemple d'un manager snmp en java.
    merci
    Ca c'est typiquement une question à laquelle je répondrai: "Fait une recherche"
    Tu trouveras tous les tutoriaux dont tu as besoin sur (et en particulier sur le site même de snmp4j, où tu as des exmples basiques d'utilisation)
    Ensuite, si tu as un problème plus précis et dont la réponse n'est pas dans les tutos, on pourra essayer de t'aider.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  19. #19
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Accés à la mib
    Bonjour,

    j'ai realisé un manager snmp et maintenat je peu recuperer l'OID, mais j'ai trouvé des difficulté a fair un programme qui peu lire la mib et trouvé l'information de l'oid, et je ss vraiment bloqué.
    si quelqu'un peu m'aider je lui serai tres reconnaissant.

    merci

  20. #20
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Snmp4j et les thread
    Bonjours tout le monde, avec le snmpv1 on a la posibilite de savoir les processus actif ou les service ou les interfaces d'une machine en utilisant les thread ma question est: est ce que on a la posibilite avec snmp4j on a la possibilté d'utilisé les thread et savoir les processus actif et... s'il est possible j'ai besoin d'un petit code en java
    et merci

Discussions similaires

  1. [SNMP4J] Utilisation
    Par al3amil047 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 05/01/2014, 11h39
  2. utilisation cas spécial snmp4J
    Par vincent29200 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 23/04/2011, 20h08
  3. utilisation de snmp4j
    Par javasi dans le forum NetBeans
    Réponses: 1
    Dernier message: 02/11/2009, 09h01
  4. Utilisation de l'API SNMP4J et de la MIB
    Par baudouin_07 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 08/12/2007, 09h32
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo