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 :

snmp pour débutant


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 snmp pour débutant
    Bonjour

    Je suis toujours sur le crate snmp. J'ai enfin récupéré ma valeur d'OID (grâce à vous lors de mon post précédent ) mais je n'arrive pas à la manipuler.
    De se que j'ai compris je récupère un "value" qui peux prendre différents type. Mais j'aimerai juste le caster pour avoir un Int ou un String au pire, car je n'arrive pas à le sortir de ma fonction.
    Pour récupérer 25 pour A et les autres dans le main.

    Pourais-je encore avoir de l'aide de votre part
    D'avance merci.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    extern crate snmp;
     
     
    fn getoid(a :u32, b :u32, c : u32, d : u32, e : u32, f : u32, g : u32, h : u32, i : u32, j : u32, k : u32, l : u32, m : u32 ){
     
       use std::time::Duration;
       use snmp::SyncSession;
       use snmp::Value;
     
     
       let col = if m==1 {"A"} else if m==2 {"B"} else if m==3 {"C"} else {"D"};
     
       let sys_descr_oid = &[a,b,c,d,e,f,g,h,i,j,k,l,m,];
       let agent_addr    = "192.168.5.5:161";
       let community     = b"public";
       let timeout       = Duration::from_secs(2);
     
     
       let mut sess = SyncSession::new(agent_addr, community, Some(timeout), 0).unwrap();
       let response = sess.get(sys_descr_oid).unwrap();
     
      //le résultat est un enum Value.
      for (_name, value) in response.varbinds {
     
            println!("{} => {:?}", col, value);
       };
     
    }
     
     
    fn main() {
     
     
        println!("Et le résultat est:");
     
        getoid(1,3,6,1,2,1,43,11,1,1,9,1,1);
        getoid(1,3,6,1,2,1,43,11,1,1,9,1,2);
        getoid(1,3,6,1,2,1,43,11,1,1,9,1,3);
        getoid(1,3,6,1,2,1,43,11,1,1,9,1,4);
     
     
    }

    ce qui me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Finished dev [unoptimized + debuginfo] target(s) in 0.94s
         Running `target\debug\copsnif.exe`
    Et le résultat est:
    A => INTEGER: 25
    B => INTEGER: 50
    C => INTEGER: 25
    C => INTEGER: 25

  2. #2
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour ;
    Votre fonction doit retourner la valeur souhaiter et ensuite vous pouvez la modifier dans votre fonction principale (le main). Une approche simple serait de procéder de la manière ci-dessous. Toutefois, je ne vous donne pas la solution, mais une façon parmi tant d'autres de récupérer la valeur souhaitée.


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    use snmp::SyncSession;
     
     
    const NIL : i32 = 0x0;
    const TIMEOUT : u64 = 0x2;
    const ADDR_AGENT_SVR : &str = "198.51.100.123:161";
    static DESCRIPT_IOD : &'static [u32] = &[1,3,6,1,2,1,1,2,0,];
     
    fn get_iod_srv(descript :&'static [u32])->Result< u32, &'static str>{
     
        let session = SyncSession::new(ADDR_AGENT_SVR, b"Public",
            Some(::std::time::Duration::from_secs(TIMEOUT)), 
                NIL).unwrap();
        let mut ret = session.get(descript).unwrap();
     
        /*
         * ATTENTION LA PORTION DE CODE CI-DESSOUS EST UN EXEMPLE 
         * NON FONCTIONNEL ET PAS COMPILER 
         * VOUS DEVEZ_READAPTER LES INSTRUCTIONS CI-DESSOUS 
         **/
        for  (iod, value) in ret.varbinds{
            match value{
                Some(......) => Ok(..........),
                ...... ect........
                _ => Err("Erreur aucune valeur trouvé"),
            };
        }
     
        Ok(())
    }
     
     
    fn main()->Result<(),String>{
     
        let mut ret_value = get_iod_srv(DESCRIPT_IOD)
            .unwrap();
        println!("ret_value = {}", ret_value);
        Ok(())
    }
    À bientôt.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  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 merci
    Je vais regarder ça merci beaucoup pour votre aide

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

Discussions similaires

  1. Port comm pour débutant
    Par carotreger dans le forum Débuter
    Réponses: 11
    Dernier message: 03/11/2005, 01h19
  2. Réponses: 2
    Dernier message: 17/10/2005, 23h16
  3. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 20h31
  4. Aide pour débutant : addition
    Par playentry dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2005, 20h08

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