ENVOI DE TRAPS SNMP

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 19 juin 2007 à 20:12
cs_Moun Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 30 décembre 2008 - 30 déc. 2008 à 10:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43178-envoi-de-traps-snmp

cs_Moun Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 30 décembre 2008
30 déc. 2008 à 10:40
Je n'ai plus le doc en question (changement de travail depuis et le livre est resté dans mon ancienne équipe...) mais pour résumer, il ne faut pas chercher le pourquoi : c'est la norme SNMP qui veut ça.
Un trap SNMP n'a pas de taille fixe, d'où la nécessité dans le protocole de spécifier la taille totale du paquet qui va suivre (dans ma structure "PaqSnmp" les variables "Longueur_Totale", "Longueur_Totale1" et "Longueur_Totale2") et les tailles des différentes variables que je veux transmettre (dans ma structure "Var_snmp", les variables "Len_totx" et les variables "Len_varx")
Si tu veux un descriptif détaillé, il te faudra te procurer un livre sur les protocoles réseaux (généralement, ces livres détaillent les protocoles SMTP, SNMP, ...)

Je vais tout de même essayer de te faire un semblant de schéma :

|-- Entete
|-- Nb de bytes qui vont suivre et composer le trap SNMP envoyé
|-- Infos sur le type (trap), la version du protocole,...
|-- Nb de bytes restants du paquet
|-- Infos sur l'OID du trap, le timestamp (nb de secondes depuis le démarrage de l'équipent source,...
|-- Nb de bytes restants du paquet
|-- Les variables
|-- Var1
|-- Longueur de la variable
|-- Infos sur l'OID de cette variable (= pour simplifier, son nom sous forme numérique)
|-- Nb de bytes composant la valeur de la variable
|-- La valeur de la variable (si chaine de caractère, la chaine en question, si valeur numérique, la valeur en question
|-- Var2
|-- Longueur de la variable
|-- Infos sur l'OID de cette variable (= pour simplifier, son nom sous forme numérique)
|-- Nb de bytes composant la valeur de la variable
|-- La valeur de la variable (si chaine de caractère, la chaine en question, si valeur numérique, la valeur en question
|-- Var3
.
.
.
.
.
|-- Varn
|-- Longueur de la variable
|-- Infos sur l'OID de cette variable (= pour simplifier, son nom sous forme numérique)
|-- Nb de bytes composant la valeur de la variable
|-- La valeur de la variable (si chaine de caractère, la chaine en question, si valeur numérique, la valeur en question

En espérant que ça te donne les pistes nécessaires à la compréhension du code...
mlikos Messages postés 16 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 28 avril 2010
29 déc. 2008 à 20:18
Bsr , mais pourquoi exactement 129 ou 255? , cvp est ce tu peux m'envoyer un doc sur le quel il y a la taille totale de la traps et chaque paramètre de la trap est codé sur combien de bits, merci d’avance
mlikos Messages postés 16 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 28 avril 2010
29 déc. 2008 à 10:55
merci mr moun tu ma vraiment aider sur ce niveaux
cs_Moun Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 30 décembre 2008
29 déc. 2008 à 09:55
Ce bout de code correspond à une partie de la norme SNMP :
- Si le contenu de la variable du trap a une taille supérieur à 255 bytes, la taille indiquée dans le trap est codée sur 3 bytes : 1 byte contenant la valeur 130 qui indique que les 2 prochains bytes contiendront la taille de la variable via l'utilisation du modulo 256, et les 2 autres bytes, la taille en question.

- Si le contenu de la variable a une taille comprise entre 128 et 255, la taille est codée sur 2 bytes : 1 byte contenant la valeur 129 indiquant que le byte suivant contiendra la taille et le 2ème contient effectivement cette taille.

- Si le contenu de la variable a une taille inférieure à 128, la taille est codé sur un seul byte.

A chacun de ces tests, j'ajuste la valeur de Taille_var pour y ajouter les bytes utilisé pour le codage effectué pour mémoriser la taille globale du paquet envoyé (pour pouvoir l'utiliser dans les parties du paquet où cela sera nécessaire : cf la structure d'un paquet snmp dans le type "PaqSnmp" du code).
mlikos Messages postés 16 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 28 avril 2010
26 déc. 2008 à 20:16
mR MOUN j'ai essayer de comprendre ce script mais j'ai un petit probléme au niveau de ce test :
# If Taille_var > 255 Then
# .Longueur_trap = 130
# .Longueur_trap1 = Taille_var \ 256
# .Longueur_trap2 = Taille_var Mod 256
# Taille_var = Taille_var + 9 + .Comm_longueur
# Else
# If Taille_var > 127 Then
# .Longueur_trap = 129
# .Longueur_trap1 = Taille_var
# Taille_var = Taille_var + 8 + .Comm_longueur
# Else
# .Longueur_trap1 = 0
# .Longueur_trap2 = Taille_var
# Taille_var = Taille_var + 7 + .Comm_longueur
# End If
# End If
cs_Moun Messages postés 7 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 30 décembre 2008
20 juin 2007 à 09:41
Encore une petite info si vous voulez tester ce programme et que vous ne disposez pas de manager SNMP :
Vous pouvez trouver un outil permettant de visualiser les traps SNMP reçues et vous en servir comme manager SNMP sur www.bttsoftware.co.uk/snmptrap.html (freeware)
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 juin 2007 à 20:12
Salut
J'étais bien curieux de voir ce code, mais impossible de le faire fonctionner.
Que faut-il faire du Socket fourni ? Il n'a pas d'instruction .Connect ...
Les paramètres sont nombreux et va falloir se plonger dans les RFC pour détailler tout ça.
Tu n'aurais pas un petit ZIP avec un exemple de base ?
Rejoignez-nous