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

C++ Discussion :

Bibliothèque net-snmp switch


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut Bibliothèque net-snmp switch
    Bonjour a tous,

    Voila j'essai d'utiliser la bibliothèque net-snmp sous crunchbang linux, afin de pouvoir intérroger un oid d'un switch et recevoir la reponse.

    Je me sers du tutoriel du site de net-snmp afin de réaliser une petite application.
    http://http://net-snmp.sourceforge.net/wiki/index.php/TUT:Simple_Application

    Malheureusement je n'arrive pas à l'utiliser. Si quelqu'un pourrait m'aiguiller svp !

    Merci

  2. #2
    Membre Expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Par défaut
    Peux-tu nous dire ce que tu as essayé de faire, et éventuellement les erreurs qui en découlent ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut
    J'éssai de reprendre le code du tutoriel, pour ouvrir une session avec un switch, lui demander un oid, et recevoir et afficher la réponse.

    Mais je n'arrive pas a comprendre a quel moment, on donne l'adresse du switch.
    Pourtant j'ai fais exactement la même chose sur windows, mais la je suis un peu perdu

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Peux tu donner ton code et les éventuels messages d'erreurs si tu en as ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    #include <net-snmp/net-snmp-config.h>
    #include <net-snmp/net-snmp-includes.h>
    #include <string.h>
     
    /* change the word "define" to "undef" to try the (insecure) SNMPv1 version */
    #define DEMO_USE_SNMP_VERSION_3
     
    #ifdef DEMO_USE_SNMP_VERSION_3
    const char *our_v3_passphrase = "The Net-SNMP Demo Password";
    #endif
     
    int main(int argc, char ** argv)
    {
        netsnmp_session session, *ss;
        netsnmp_pdu *pdu;
        netsnmp_pdu *response;
     
        oid anOID[MAX_OID_LEN];
        size_t anOID_len;
     
        netsnmp_variable_list *vars;
        int status;
        int count=1;
     
        /*
         * Initialize the SNMP library
         */
        init_snmp("snmpdemoapp");
     
        /*
         * Initialize a "session" that defines who we're going to talk to
         */
        snmp_sess_init( &session );                   /* set up defaults */
        session.peername = strdup("test.net-snmp.org");
     
        /* set up the authentication parameters for talking to the server */
     
    #ifdef DEMO_USE_SNMP_VERSION_3
     
        /* Use SNMPv3 to talk to the experimental server */
     
        /* set the SNMP version number */
        session.version=SNMP_VERSION_3;
     
        /* set the SNMPv3 user name */
        session.securityName = strdup("MD5User");
        session.securityNameLen = strlen(session.securityName);
     
        /* set the security level to authenticated, but not encrypted */
        session.securityLevel = SNMP_SEC_LEVEL_AUTHNOPRIV;
     
        /* set the authentication method to MD5 */
        session.securityAuthProto = usmHMACMD5AuthProtocol;
        session.securityAuthProtoLen = sizeof(usmHMACMD5AuthProtocol)/sizeof(oid);
        session.securityAuthKeyLen = USM_AUTH_KU_LEN;
     
        /* set the authentication key to a MD5 hashed version of our
           passphrase "The Net-SNMP Demo Password" (which must be at least 8
           characters long) */
        if (generate_Ku(session.securityAuthProto,
                        session.securityAuthProtoLen,
                        (u_char *) our_v3_passphrase, strlen(our_v3_passphrase),
                        session.securityAuthKey,
                        &session.securityAuthKeyLen) != SNMPERR_SUCCESS) {
            snmp_perror(argv[0]);
            snmp_log(LOG_ERR,
                     "Error generating Ku from authentication pass phrase. \n");
            exit(1);
        }
     
    #else /* we'll use the insecure (but simplier) SNMPv1 */
     
        /* set the SNMP version number */
        session.version = SNMP_VERSION_1;
     
        /* set the SNMPv1 community name used for authentication */
        session.community = "demopublic";
        session.community_len = strlen(session.community);
     
    #endif /* SNMPv1 */
     
        /*
         * Open the session
         */
        SOCK_STARTUP;
        ss = snmp_open(&session);                     /* establish the session */
     
        if (!ss) {
          snmp_sess_perror("ack", &session);
          SOCK_CLEANUP;
          exit(1);
        }
     
        /*
         * Create the PDU for the data for our request.
         *   1) We're going to GET the system.sysDescr.0 node.
         */
        pdu = snmp_pdu_create(SNMP_MSG_GET);
        anOID_len = MAX_OID_LEN;
        if (!snmp_parse_oid(".1.3.6.1.2.1.1.1.0", anOID, &anOID_len)) {
          snmp_perror(".1.3.6.1.2.1.1.1.0");
          SOCK_CLEANUP;
          exit(1);
        }
    #if OTHER_METHODS
        /*
         *  These are alternatives to the 'snmp_parse_oid' call above,
         *    e.g. specifying the OID by name rather than numerically.
         */
        read_objid(".1.3.6.1.2.1.1.1.0", anOID, &anOID_len);
        get_node("sysDescr.0", anOID, &anOID_len);
        read_objid("system.sysDescr.0", anOID, &anOID_len);
    #endif
     
        snmp_add_null_var(pdu, anOID, anOID_len);
     
        /*
         * Send the Request out.
         */
        status = snmp_synch_response(ss, pdu, &response);
     
        /*
         * Process the response.
         */
        if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR) {
          /*
           * SUCCESS: Print the result variables
           */
     
          for(vars = response->variables; vars; vars = vars->next_variable)
            print_variable(vars->name, vars->name_length, vars);
     
          /* manipuate the information ourselves */
          for(vars = response->variables; vars; vars = vars->next_variable) {
            if (vars->type == ASN_OCTET_STR) {
    	  char *sp = (char *)malloc(1 + vars->val_len);
    	  memcpy(sp, vars->val.string, vars->val_len);
    	  sp[vars->val_len] = '\0';
              printf("value #%d is a string: %s\n", count++, sp);
    	  free(sp);
    	}
            else
              printf("value #%d is NOT a string! Ack!\n", count++);
          }
        } else {
          /*
           * FAILURE: print what went wrong!
           */
     
          if (status == STAT_SUCCESS)
            fprintf(stderr, "Error in packet\nReason: %s\n",
                    snmp_errstring(response->errstat));
          else if (status == STAT_TIMEOUT)
            fprintf(stderr, "Timeout: No response from %s.\n",
                    session.peername);
          else
            snmp_sess_perror("snmpdemoapp", ss);
     
        }
     
        /*
         * Clean up:
         *  1) free the response.
         *  2) close the session.
         */
        if (response)
          snmp_free_pdu(response);
        snmp_close(ss);
     
        SOCK_CLEANUP;
        return (0);
    } /* main() */

    voila le code disponible sur le tutoriel de net-snmp.

    J'aimerais savoir qu'est ce qui est réellement essentiel, pour la connection, les parametres de session, la reponse ...

    Mais j'ai beaucoup de mal a comprendre ce code .

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par atum25 Voir le message
    Mais je n'arrive pas a comprendre a quel moment, on donne l'adresse du switch.
    Citation Envoyé par atum25 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const char *our_v3_passphrase = "The Net-SNMP Demo Password";
    ...
    session.peername = strdup("test.net-snmp.org");
    ...
    session.securityName = strdup("MD5User");
    ...
    session.community = "demopublic";
    A priori, je ne t'ai laissé que le code nécessaire à l'authentification qu'il faut mettre à jour en fonctiond e ton environnement.

    C'est bien les examples, mais il faut chercher à les comprendre un peu pour les adapter

    Je ne saurais trop te conseiller de commencer avec du SNMP en version V1 ou V2c avant de tester en V3.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. net-snmp et c++ . that si a question ??
    Par ange1708 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 09/06/2008, 11h55
  2. Problème d'installation du package net-snmp
    Par tck-lt dans le forum Administration système
    Réponses: 5
    Dernier message: 27/02/2007, 16h29
  3. [snmp] impossible d'installer net-snmp sur Windows
    Par jambono dans le forum Développement
    Réponses: 5
    Dernier message: 01/12/2006, 14h02
  4. agent net-snmp en c
    Par ange1708 dans le forum C
    Réponses: 3
    Dernier message: 11/07/2006, 10h15

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