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

WinDev Discussion :

Les protocoles SNMP


Sujet :

WinDev

  1. #1
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut Les protocoles SNMP
    Bonsoir à Tous,

    Je sollicite à nouveau votre aide concernant les protocoles SNMP.

    Malgré l'aide, je n'arrive pas à comprendre la différence entre SNMPLit() et SNMPChargeMIB().

    Si je comprend l'application de la commande SNMPLit() par l'exemple suivant qui récupère une information correspondante à l'OID renseignée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Récupération du système
    nIDSNMP est un entier
    Système = SNMPLit(nIDSNMP,"1.3.6.1.2.1.1.1.0")
    Je ne comprend pas l'utilisation de la commande SNMPChargeMIB().

    Si je me réfère à l'exemple suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    bMIBChargé est un booléen
    sCheminMIBs est une chaîne = ComplèteRep("C:\WINDOWS\system32\")
    sMib est une chaîne
    sMib = "lmmib2.mib" 
    bMIBChargé = SNMPChargeMIB(sCheminMIBs+sMib)
    Trace("charge SNMP",SNMPChargeMIB(sCheminMIBs+sMib))
    SI bMIBChargé = Faux ALORS Erreur("Erreur MIB : "+ ErreurInfo())
    J'aurais tendance à comprendre que le système va chercher le fichier "lmmib2.mib" , sauf que la trace me renvoi le résultat : 1, et cela veut il dire que je dois avoir autant de commande que de fichier mib, ou dois je comprendre que cela ce fais automatiquement d'après l'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Si un fichier MIB accède dans son code à un autre fichier MIB, 
    le chargement du second fichier MIB est automatiquement réalisé 
    (si le nom précisé dans le fichier MIB est identique au nom 
    physique du fichier MIB).
    N'ayez pas peur de penser que je suis stupide, mais vu que je suis à la limite de croire que le mandarin littéraire est plus facile à comprendre....comment savoir si le code du premier permets l'accès du second.

    Mais là où je nage complètement, c'est comment récupère il les informations ?

    D'autant que lorsque je consulte le répertoire "system32", il s'y trouve apparemment tous les fichiers ".mib" nécessaire, mais comment les récupérer les uns après les autres ?

    Pour autant, j'ai l'impression de ne pas pouvoir passer outre cette commande puisque je ne connais pas la liste des valeurs OID et que si j'ai compris (ce qui là ne serait être une affirmation.....), les fichiers ".mib" renferment les codes dont l'application aurait besoin.

    Je ne sais pas si j'ai été très clair, mais force de reconnaitre que ce n'est pas simple dans ma tête pour le moment.

    Alors, par avance merci pour une explication plus claire me permettant d'avancer ou de me dire si je fais carrément fausse route.

    Bonne nuit à Tous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Je ne répondrais pas directement à votre question car je n'avais jamais pensé à gérer les états snmp à partir de Windev (mais l'idée est excellente, je vais creuser).
    Pour info, allez à http://christian.caleca.free.fr/snmp/principe.htm qui décrit très bien le protocole snmp et la mib (arborescence).
    J'utilise pour mes réseaux les logciels qui sont livrés avec les serveurs que je pose et mets en service.
    Mais je vais vraiment creuser l'idée... et si j'ai une illumination, alors, je vous la ferais partager...
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  3. #3
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonsoir EDM-TAHITI,

    Avant tout merci pour votre réponse et votre intérêt.
    J'ai déjà lu l'article (très intéressant) que vous m'avez conseillé.

    Concernant les OID et MIB, j'ai déjà réussi à récupérer certaines informations (cités dans le code du 1er Post), mais en effet, je tente de récupérer l'ensemble des informations dont les logiciels installés etc.

    La finalité serait de mettre en place un robot de surveillance et de gestion du parc informatique (PC, Imprimantes, caméras, caisses, routeurs, serveurs...)

    Une partie des données doivent provenir de la base de registre et d'autres via des commandes SNMP

    -L'appel des fonction SNMP est assez simple en fin de compte.
    Ce qui complique tout, c'est de connaitre les séries de nœuds adéquate afin de récupérer les bonnes informations. (ce n'est pas gagné...)

    - Concernant la base de registre, j'ai compris comment récupérer la liste des valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegistreListeValeur("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System")
    - Mais pour le moment je ne comprends pas comment récupérer les valeurs elles même



    Merci beaucoup
    Et Bonne soirée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour Raptor92

    Pour lire le contenu d'une valeur de la bdr il faut utiliser RegistreLit
    Dans ton cas il faut extraire les valeurs renvoyées par RegistreListeValeur et pour chacune utiliser RegistreLit
    Exemple
    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
    sListeVal est une chaîne
    sValeur est une chaîne
    sContenu est une chaîne
    sCleRegistre est une chaîne = "HKEY_CURRENT_USER\Console"
    
    sListeVal = RegistreListeValeur(sCleRegistre)
    
    POUR TOUTE CHAINE sValeur DE sListeVal SEPAREE PAR RC
    	
    	sContenu = RegistreLit(sCleRegistre, sValeur)
    	
    	// Affiche clé, nom de la valeur et son contenu
    	Trace(sCleRegistre, sValeur, sContenu)
    	
    FIN

  5. #5
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour HPascal,

    J'espère que tu va bien..

    Avant tout merci, cela fonctionne(bien sur..), mais si je tente de récupérer des infos système, il me met en erreur:

    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
    Erreur à la ligne 24 du traitement Procédure locale System_Registre.
    La fonction RegistreLit aurait dû renvoyer une valeur.
     
    Informations techniques
     
    Projet : WD Gestion de parc informatique
     
    Dump de l'erreur du module <WD140VM.DLL> <14.00Qs>.
     
    - Appel WL :
    Traitement de <FEN_SNMP.PROCEDURE.System_Registre>, ligne <24>, thread <0>
     
    - Niveau : erreur fatale (EL_FATAL)
     
    - Code erreur : 1005
     
    - Code erreur WD55 : 0
     
    - Pas de code d'erreur système
     
    - Pas de message d'erreur système
     
    - Que s'est-il passé ?
    La fonction RegistreLit aurait dû renvoyer une valeur.
     
    - Infos de debug :
    Fonction (8,70)
     
    - Infos attachées :
    EIT_PILEWL :
    Procédure locale System_Registre (FEN_SNMP.PROCEDURE.System_Registre), ligne 24
    Clic sur BTN_Actualiser (FEN_SNMP.BTN_Actualiser), ligne 63
    Initialisation de FEN_SNMP (FEN_SNMP), ligne 2
    Clic sur BTN_SNMP (FEN_Principale.BTN_SNMP), ligne 1
    EIT_COMPOSANT :
     
    EIT_DATEHEURE : 19/03/2010 11:03:49
     
    - Identifiant dans le .err : 1005
     
     
    Assistance
    Alors, bien entendu, si tu pouvait m'aider....mais surtout m'expliquer, parce que je cherche depuis deux jours sur le net des explications sur le sujet, et soit je ne comprends pas soit je ne trouve pas.

    Par avance merci
    Et très bonne journée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Tu peux mettre le bout de code qui te génère ça, plus particulièrement autour de la ligne 24 de la procédure System_Registre

  7. #7
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Re Bonjour,

    Citation Envoyé par hpascal Voir le message
    Tu peux mettre le bout de code qui te génère ça, plus particulièrement autour de la ligne 24 de la procédure System_Registre
    Voici le 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
    sListeVal est une chaîne
    sValeur est une chaîne
    sContenu est une chaîne
    sCleRegistre est une chaîne = "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0"
    
    sListeVal = RegistreListeValeur(sCleRegistre)
    
    POUR TOUTE CHAINE sValeur DE sListeVal SEPAREE PAR RC
    	
    	sContenu = RegistreLit(sCleRegistre, sValeur)
    	
    	// Affiche clé, nom de la valeur et son contenu
    	Imprimantes= sCleRegistre +"--"+ sValeur+"--"+ sContenu
    	
    FIN
    A noter que les autres accès aux différentes bases de registre me retourne bien les informations (Écran, imprimantes...)

    En merci pour ton aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Visiblement certaines valeurs binaires posent problème à RegistreLit
    Mais ça ne devrait pas planter, au pire renvoyer vide
    Signale quand même l'erreur à PCSOFT pour qu'ils blindent leur fonction

    Dans ton cas ces valeurs binaires ne te seront pas utiles je suppose, il suffit donc d'ignorer l'erreur en interceptant l'exception :

    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
    POUR TOUTE CHAINE sValeur DE sListeVal SEPAREE PAR RC
    	
    	QUAND EXCEPTION DANS
    		sContenu = RegistreLit(sCleRegistre, sValeur, bResExecute)
    	FAIRE
    		Info(sCleRegistre, sValeur, "ERREUR : ", RC + ExceptionInfo(errComplet))
    		sContenu = ""
    		ExceptionActive()
    	FIN
    	
    	// Affiche clé, nom de la valeur et son contenu
    	SI sContenu <> "" ALORS
    		Trace(sCleRegistre + "--" + sValeur + "--" + sContenu)
    	FIN
    	
    FIN
    Tu peux aussi demander à RegistreListeValeur de te retourner le type de la valeur et ne lire que les valeurs de type texte et numérique :
    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
    sListeVal est une chaîne
    sValeurEtType est une chaîne
    sValeur est une chaîne
    sType est une chaîne
    sContenu est une chaîne
    sCleRegistre est une chaîne = "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0"
     
    sListeVal = RegistreListeValeur(sCleRegistre, Vrai)
     
     
    POUR TOUTE CHAINE sValeurEtType DE sListeVal SEPAREE PAR RC
     
    	sValeur = ExtraitChaîne(sValeurEtType, 1)
    	sType = ExtraitChaîne(sValeurEtType, 2)
     
    	SI sType DANS("T", "N") ALORS
    		sContenu = RegistreLit(sCleRegistre, sValeur)
     
    		// Affiche clé, nom de la valeur et son contenu
    		Trace(sCleRegistre + "--" + sValeur + "--" + sContenu)
    	FIN
     
    FIN

  9. #9
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonsoir HPascal,

    Que dire.....

    Merci beaucoup pour ton aide qui m'a permis de résoudre le problème de récupération des données.

    Pour autant, j'ai une dernière question sur ce sujet:

    Au vu du code ci-dessous, pourquoi je récupère bien l'ensemble des données dans la trace et que je n'arrive pas à les afficher dans le champ libellé ?

    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
    sListeVal est une chaîne
    sValeurEtType est une chaîne
    sValeur est une chaîne
    sType est une chaîne
    sContenu est une chaîne
    sCleRegistre est une chaîne = "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0"
     
    sListeVal = RegistreListeValeur(sCleRegistre, Vrai)
     
     
    POUR TOUTE CHAINE sValeurEtType DE sListeVal SEPAREE PAR RC
     
    	sValeur = ExtraitChaîne(sValeurEtType, 1)
    	sType = ExtraitChaîne(sValeurEtType, 2)
     
    	SI sType DANS("T", "N") ALORS
    		sContenu = RegistreLit(sCleRegistre, sValeur)
    		Clé est une chaîne=sValeur + "--" + sContenu
    		// Affiche clé, nom de la valeur et son contenu
    		Trace(Clé)
    		Info_Libellé=Clé
     
     
    	FIN
    FIN
    Maintenant, je suis loin d'avoir terminer mon application, il me faut créer les diagrammes, l'architecture et l'environnement.

    Mais comme toujours, ton aide est précieuse

    Bonne soirée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  10. #10
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonsoir,

    Je viens de trouver un moyen de récupérer les infos de la trace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    		// Affiche clé, nom de la valeur et son contenu
    		TraceDébut(trFichier, "C:\WD_ROBOT\TRACEUR\Trace_system.txt")
    		...
    		Trace(trFichier,Clé)
    De là, il devient simple de les récupérer afin de les afficher à l'endroit souhaité.

    Ma question:
    Est ce la bonne solution ou il y a il plus simple ?

    Bonne nuit
    Et merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  11. #11
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour Raptor92

    Tu écrases le contenu de ton champ libellé à chaque passage
    Si tu veux afficher toutes les valeurs il faut les cumuler dans le libellé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info_Libellé += RC + Clé
    Bon week-end

  12. #12
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour HPascal,

    Merci beaucoup pour ton aide.

    Bon Dimanche
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


Discussions similaires

  1. Question sur les possibilité du protocole snmp
    Par Skanking dans le forum Développement
    Réponses: 1
    Dernier message: 18/11/2007, 22h32
  2. Question "pas si bête" sur le protocole SNMP
    Par arsenik7 dans le forum Développement
    Réponses: 3
    Dernier message: 02/01/2006, 11h49
  3. [ns2 network simulator]comment specifier les protocoles
    Par popov2 dans le forum Développement
    Réponses: 1
    Dernier message: 26/11/2005, 13h18
  4. [SNMP] Utilisation du protocole SNMP
    Par arsenik7 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/10/2005, 11h03
  5. le protocole snmp
    Par stephy dans le forum Développement
    Réponses: 4
    Dernier message: 06/12/2002, 20h55

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