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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    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 éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    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)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    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 éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    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 ?

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    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 éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    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 ?

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