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

Rust Discussion :

Aide Snmp rust


Sujet :

Rust

  1. #1
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Aide Snmp rust
    Bonjour

    Je suis un développeur débutant, j'ai déjà fais un petit peu de java mais c'est tout.
    Je suis motivé pour coder avec Rust mais à peine commencé que je manque de ressources, j'ai essayé une recherche global avant.

    Alors voilà:

    Je suis en train de chercher l'utilisation de get avec le crate snmp mais je n'ai des exemple qu'avec get.next.
    Je n'ai qu'une information à remonter et quand j'essaye avec le get.next (en essais seulement bien-sûr) j'arrive à remonter une info avec un oid court (arbre de 9 chiffres) mais dès qu'il s'agit d'un oid long (arbre de 13 chiffres) ça ne remonte plus rien, pas même une erreur.

    J'espère que vous pourrez m’aiguiller un peu.
    Je vous en remercie d'avance.

    Bonne journée.

  2. #2
    Membre habitué
    Homme Profil pro
    Master Data Manager
    Inscrit en
    Février 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Master Data Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 113
    Points : 148
    Points
    148
    Par défaut
    Bonjour.

    Auriez-vous un code d'exemple pour mettre en évidence le problème ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Bonjour

    Oui bien sûr j' ai juste repris le bout d'exemple fournis avec le crate:

    Code Rust : 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
    extern crate snmp;
     
    fn main() {
     
        println!("Hello, world!");
     
     use std::time::Duration;
     use snmp::{SyncSession, Value};
     
     let sys_descr_oid = &[1,3,6,1,2,1,1,2,0,];
     let agent_addr    = "192.168.0.19:161";
     let community     = b"public";
     let timeout       = Duration::from_secs(2);
     
     let mut sess = SyncSession::new(agent_addr, community, Some(timeout), 0).unwrap();
     let mut response = sess.getnext(sys_descr_oid).unwrap();
     
     if let Some((_oid, Value::OctetString(sys_descr))) = response.varbinds.next() {
         println!("myrouter sysDescr: {}", String::from_utf8_lossy(sys_descr));
     }
    }

    J'ai aussi remplacé sess.getnext par sess.get
    Après d'autres essais je me suis rendu compte que j'avais le souci sur des oid court . Je pense en fait que cela vient du fait du println! qui renvoi un String et donc qu'il ne m'affiche que les résultats qui ont un format String .

    Merci pour votre aide

  4. #4
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Avant tout : je suis débutant en Rust et ne connais pas SNMP, mais, de ce que j'ai compris (et testé) :


    response.varbinds est un itérateur.

    Celui ci renvoie soit None soit Some d'un tuple de type (ObjectIdentifier, Value)

    ObjectIdentifier est l'oid de l'item et value la valeur.

    La valeur peut être de différent type.

    Le test que tu effectues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if let Some((_oid, Value::OctetString(sys_descr))) = response.varbinds.next() {
    signifie : si le premier item de mon itérateur (.next) est égal à une tuple qui a comme valeur l'oid demandé et une value de type OctetString, alors affiche le résultat.

    Dans ton cas, tu ne récupère pas un OctetString, du coup ton test échoue et le println! n'est pas exécuté.

    Pour voir ce que tu récupères après le get, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let mut response = sess.get(sys_descr_oid).unwrap();
    
    for (name, val) in response.varbinds {
          println!("{} => {:?}", name, val);
    }
    Ce code va parcourir tout les résultats que contient ton itérateur et va afficher l'oid et la valeur sous forme de chaine (quelque soit le type de la valeur)


    J'ai fait deux exemples qui renvoie deux types de valeurs différentes, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1.3.6.1.2.1.1.3.0 => TIMETICKS: 71923735 // pour une valeur de type TimeTicks
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1.3.6.1.2.1.1.2.0 => OBJECT IDENTIFIER: 1.3.6.1.4.1.2435.2.3.9.1 // pour une valeur de type OID
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Super . effectivement les valeurs que je récupère sont du type Integer alors forcément ça ne pouvait pas marcher

    Merci pour ton aide et surtout la petite explication qui va bien c'est vraiment super.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Besoin d'Aide - Traitement des requêtes SNMP en PHP
    Par crycry51 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/01/2015, 20h15
  2. besoin d'aide sur la supervision avec le protocole SNMP
    Par aimy.k dans le forum Supervision
    Réponses: 2
    Dernier message: 07/05/2014, 16h08
  3. besoin d'aide pour SNMP/Util.pm
    Par matttimon dans le forum Programmation et administration système
    Réponses: 13
    Dernier message: 09/04/2010, 10h07
  4. [SNMP] Besoin d'aide pour SNMP, MIB dans script
    Par suya95 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 17/05/2006, 16h20

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