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 :

Probl�me variable snmp c++


Sujet :

C++

  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 Probl�me variable snmp c++
    Bonjour,
    j'essaie d�interroger un switch avec le snmp en c++,
    j'arrive a r�cup�rer la valeur de l'oid que je cherche, mais le r�sultat est dans une structure "snmpVarBindList", que j'arrive a afficher avec un cout dans la console avec

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    SnmpUtilPrintAsnAny(&snmpVarList.list[0].value)
    mais j'aimerais r�cup�rer cette valeur afin de la mettre dans un tableau et de la retravailler plus tard, mais elle est de type "AsnAny",
    j'aimerais savoir une m�thode pour r�cup�r� cette valeur en dehors de cette structure,
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     if (SnmpMgrRequest(session,SNMP_PDU_GETNEXT,&snmpVarList,&errorStatus,&errorIndex)!=0)
            {
                    if (errorStatus==SNMP_ERRORSTATUS_NOERROR)
                    {
                            //printf("Lecture OK\n");
                            //printf("[%s]\n",id);       // AFFICHE L'OID CHERCHER
                            SnmpUtilPrintAsnAny(&snmpVarList.list[0].value);    //AFFICHE LA VALEUR DE L'OID
                    }
    merci

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    AsnAny est une structure, cf http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    A toi de voir quel champ t'int�resse.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  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
    AsnOctetString string;

    je pense que c'est dans celui la, vu que le r�sultat est l'adresse mac sous forme de string, mais comment est ce que je fais pour le r�cup�rer dans un char ou une AnsiString ?

  4. #4
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Pour savoir quel est le champ correct, tu as un premier champ BYTE asnType dont il faut v�rifier le type.
    Ensuite, je viens de remarquer mais, il s'agit d'une union, donc ton champ sera accessible via asnValue (moyennant le cast du type probablement).

    Pour le type AsnOctetString, voir http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  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
    Lorceque je teste, Asntype, il me renvoi '\x04',je pense...

    tu pourais me donner un exemple pour acceder a un champ de la structure avec un union stp, de plus je ne vois pas comment je peux savoir dans quell champ ce trouve le r�sultat de mon oid,
    merci

  6. #6
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    je t'invite � cliquer sur ce lien http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx et lire la doc correspondant � la structure et union.

    Ensuite, cf mon message ci-dessus
    Ensuite, je viens de remarquer mais, il s'agit d'une union, donc ton champ sera accessible via asnValue (moyennant le cast du type probablement).
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  7. #7
    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
    test = snmpVarList.list[0].value.asnValue.string.stream;

    j'ai essay�, mais le probleme est que test reste toujours null, je pense que je me trompe, car je ne sais pas ou trouver le resultat de mon oid, que j'arrive bien a afficher la,

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    SnmpUtilPrintAsnAny(&snmpVarList.list[0].value);
    si tu a une id�e merci

  8. #8
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Il faudrait passer en debug pour tracer ta variable.

    Peut-�tre quelque chose comme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char* szValue = (char*)((AsnOctetString)(snmpVarList.list[0].value.asnValue).stream)
    Pas s�r du tout de moi.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  9. #9
    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
    Lorceque j'essaye de compiler, il me dit que
    'stream' is not a member of 'struct'
    je vois vraiment pas, si tu as une autre id�e

  10. #10
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Quid de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char* szValue = (char*)(snmpVarList.list[0].value.asnValue.string.stream)
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  11. #11
    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
    Maintenant tout compile bien, mais
    snmpVarList.list[0].value.asnValue.string.stream
    reste toujours =""

  12. #12
    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
    Je met mon code en entier, si ca peut aider

    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
    LireMultOid(char* id, char *resultat , LPSNMP_MGR_SESSION session)
    {
        SnmpVarBindList snmpVarList;       //Structure variable Snmp
        AsnInteger errorStatus,errorIndex;
        int j = 1;
        char* test;
        char testbis[256];
     
     
        snmpVarList.list = NULL;
        snmpVarList.len = 1;
        snmpVarList.list = (SnmpVarBind *)realloc(snmpVarList.list, sizeof(SnmpVarBind) *snmpVarList.len);
        SnmpMgrStrToOid(id,&snmpVarList.list[0].name);
     
        do
        {
            if (SnmpMgrRequest(session,SNMP_PDU_GETNEXT,&snmpVarList,&errorStatus,&errorIndex)!=0)
            {
                    if (errorStatus==SNMP_ERRORSTATUS_NOERROR)
                    {
                            //printf("Lecture OK\n");
                            //printf("[%s]\n",id);       // AFFICHE L'OID CHERCHER
                            // SnmpUtilPrintAsnAny(&snmpVarList.list[0].value);    //AFFICHE LA VALEUR DE L'OID
                            //char* szValue = (char*)(snmpVarList.list[0].value.asnValue.string.stream);
                            char* szValue = (char*)(snmpVarList.list[0].value);
                    }
            }
            j=j++;
        }
        while(j!=125);
        return 0;
    }
     
    int main(int argc, char* argv[])
    {
      LPSNMP_MGR_SESSION session;
      char resultat[MAX_PATH];
      char* oid;
     
      oid = ".1.3.6.1.2.1.17.4.3.1.1"; // PORTNAME
      session = SnmpMgrOpen("192.168.2.82","public",1000,3); //ouverture de session
     
      if (session!=0)
      {
        printf("Connexion OK\n");
        LireMultOid(oid ,resultat,session);  //id racine
     
      }
      else printf("Erreur SnmpMgrOpen\n");
     
      SnmpMgrClose(session);    //fermeture
      system("PAUSE");
      return 0;
    }

  13. #13
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Ouah...

    char* test, char* resultat non utilis�s dans la fonction
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    snmpVarList.len = 1;
        snmpVarList.list = (SnmpVarBind *)realloc(snmpVarList.list, sizeof(SnmpVarBind) *snmpVarList.len);
    realloc en premi�re alloc avec une multiplication par 1, dont on ne teste pas le code retour
    j=j++ �a pique les yeux
    while(j!=125); pourquoi 125 ? j non utilis� dans la boucle ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    char* oid;
     
      oid = ".1.3.6.1.2.1.17.4.3.1.1"; // PORTNAME
    mauvaise initialisation d'un char*

    et je ne vois pas � quel moment tu r�cup�res et utilises la valeur que tu cherches depuis le d�but, ni du coup comment tu peux dire qu'elle vaut "" (cha�ne vide)

    Sans compter que... c'est du pur C

    Honnetement je ne connais pas l'utilisation de cette lib.
    Mais l'allocation de la list me paraissait �trange, et
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    variableBindings [in, out]
    Pointer to the variable bindings list.
    Note The SnmpVarBind array pointed to by the SnmpVarBindList structure must be allocated using the SnmpUtilMemAlloc function.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  14. #14
    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
    Enfaite j'�ssai d'interroger un switch afin de r�cup�rer les addresses mac des poste reli� dessus ainsi que les ports sur lesquell ils sont reli�s.

    J =125 c'�tait juste pour tester car lorceque j'apelle

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    SnmpMgrRequest(session,SNMP_PDU_GETNEXT,5 &snmpVarList,&errorStatus,&errorIndex)!=0
    sans la boucle do...while, je n'obtiens que la 1ere valeurs donc la 1ere adresse mac, il y a environ 115 poste donc 125 me permettait de tous les voirs.

    lorceque je fais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     SnmpUtilPrintAsnAny(&snmpVarList.list[0].value);
    j'obtiens bien les addresses mac

    Nom : impecran.png
Affichages : 83
Taille : 12,3 Ko

    je voudrais pouvoir recup�r� ces addresses dans une autre variable afin de m'en resservir plus loin.
    pourquoi me dis tu que je fais une mauvaise initialisation d'un char*, et pourquoi j=j++ fais mal aux yeux.
    je suis d�butant en c/c++
    merci de tes explications

    voila j'espere avoir �t� plus clair

  15. #15
    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 Toujours le meme probleme !!!
    Je n'arrive toujours pas recuper les informations de snmpVarList.list[0].value dans une variable afin de m'en servir plus tard ...
    help me

Discussions similaires

  1. Probl�me variable.
    Par deviante dans le forum MFC
    R�ponses: 3
    Dernier message: 27/01/2006, 17h27
  2. Probl�me variable et objet
    Par Hacken dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 07/09/2005, 14h10
  3. [javascript] Probl�me variable globale !!!!
    Par LE NEINDRE dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 08/08/2005, 16h41
  4. [Rave report 5.1.3][delphi 7] Probl�me variable PIVar
    Par GILLESKLEIN dans le forum Rave
    R�ponses: 2
    Dernier message: 05/02/2005, 15h27
  5. probl�me variable extern
    Par HeKaz dans le forum C
    R�ponses: 14
    Dernier message: 08/01/2003, 01h44

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