[vba/snmp]

[vba/snmp] - VB/VBA/VBS - Programmation

Marsh Posté le 07-04-2009 à 14:27:40    

Salut,
je cherche un moyen de lire une MIB via excel (VBA) et je ne trouve aucune doc.
qqun pourrait t'il m'aiguiller svp?


---------------
LaBrute
Reply

Marsh Posté le 07-04-2009 à 14:27:40   

Reply

Marsh Posté le 07-04-2009 à 15:02:03    

Il te faut une bibliothèque tierse. Il doit y en avoir qui s'interfacent facilemet avec VB.  
 
Ensuite, ben il faudra voir avec la doc de la bibliothèque que tu auras choisi.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 07-04-2009 à 15:07:06    

je ne vois pas trop de quoi il s'agit cette bibliothèque tierce.
tu aurais plus d'info stp?


---------------
LaBrute
Reply

Marsh Posté le 07-04-2009 à 15:12:37    

Tu n'es pas programmeur si ?
Si tu ne sais pas ce qu'est une bibliothèque, je doute que SNMP soit à ta portée.
 
M'enfin... une bibliothèque, c'est une collection d'objets, de fonctions, de procédures, ... implémentant plein de chose. Dans ton cas, tu as besoin d'une bibliothèque implémentant le protocole SNMP, te permettant de développer "facilement" des applications utilisant ce protocole sans avoir à te farcir tout le protocole et le fonctionnement "bas niveau" de SNMP.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 07-04-2009 à 15:27:58    

je vois ce qu'est une bibliothèque mais je ne vois pas à quelle bibliothèque tierce tu fais référence
-edit- sinon le bas niveau ne me fait pas peur, il me faut juste la doc


Message édité par x-ben le 07-04-2009 à 15:30:10

---------------
LaBrute
Reply

Marsh Posté le 07-04-2009 à 15:43:23    

Une bibliothèque tierse, c'est une lib qui vient d'un tiers ! Je n'ai pas de nom en tête qui soient facile d'accès depuis VB. Là, en tête, je n'ai que net-snmp.
 
Et si tu veux te taper le protocole snmp, c'est pas la doc qui manque sur Internet.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 07-04-2009 à 16:07:40    

je vois également ce qu'est une bibliothèque tierce.
le protocole snmp je connais également.
ce qui me manque, ce sont les méthodes pour le faire en vba.
vais-je réussir à me faire comprendre  [:at war with emo]


---------------
LaBrute
Reply

Marsh Posté le 07-04-2009 à 16:10:29    

J'essaye de t'expliquer qu'il te faut une bibliothèque tierse si tu veux pas passer 2 mois (au moins) à coder le protocole !
 
Je vois pas ce que je pourrais te dire de plus ! Lance toi donc à la recherche d'une lib, à moins que tu te sentes d'attaquer le protocole, auquel cas lance toi à al recherche de la RFC !
 
Que veux tu de plus ? SNMP est pas implémenté par VBA !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 08-04-2009 à 12:14:26    

Bonjour
 
Tout depend de ce que tu comptes faire. A la limite que tu saches ce qu'est une biblio on s'en cogne, sois peut etre un peu plus explicite sur ce que tu souhaites...
 
Tu peux te faire un batch et, par ex en utilisant snmputil.exe, le lancer avec des parametres via VBA...
Ou tu peux aussi passer par du Vbscript si tu as besoin de recuperer des valeurs...
 
Cordialement
 
Edit : Regarde de ce coté, tu auras peut etre des réponses


Message édité par SuppotDeSaTante le 08-04-2009 à 12:27:06

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 08-04-2009 à 14:25:56    

j'ai laissé tomber vba
En m'aidant de ce script vbs (http://www.generation-nt.com/snmp-entraide-146421.html) je parviens à récupérer l'IP des imprimantes dans l'AD.
maintenant je tente d'interroger la MIB de chacune de ces imprimantes et là je retombe dans la galère. Hélas je met le nez dans vbs depuis à peu près aujourd'hui.

Code :
  1. Do Until oRecordSet.EOF
  2. if (true) then
  3.  Set oCurrentPrintQueue = GetObject(oRecordSet.Fields("ADsPath" ).Value)
  4.  oSNMPManager.Agent = (Mid(oCurrentPrintQueue.Get("portName" ),4))  ' récupère l'IP de l'imprimante. jusque là ça marche
  5.  oSNMPManager.Community = "xxx"
  6.  Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.4" ) ' nb feuilles totales
  7.  Call oSNMPManager.Variables.Add( "1.3.6.1.2.1.43.10.2.1.5" ) ' nb feuilles depuis ON
  8.  Result = oSNMPManager.Get( ErrorIndex )
  9.  Set oVariablesCollection = oSNMPManager.Variables
  10.  LogFile.WriteLine(oRecordSet.Fields("printerName" ).Value & ";" & _
  11.      oSNMPManager.Variables.Add( "1.3.6.1.2.1.4.20.1.1.0" ).Value & ";" & _
  12.      oVariablesCollection.Item(1) & ";" & _        
  13.      oVariablesCollection.Item(2))
  14.       
  15.  oSNMPManager.Variables.RemoveAll
  16. End If
  17. Set oCurrentPrintQueue = Nothing
  18. CompPrinterName = oRecordSet.Fields("printerName" ).Value
  19. oRecordSet.MoveNext
  20. Loop


---------------
LaBrute
Reply

Marsh Posté le 08-04-2009 à 14:25:56   

Reply

Marsh Posté le 10-04-2009 à 10:57:16    

Quand tu fais variables.add(), la variable est ajoutée à la représentation en mémoire de l'arbre, mais pas encore écrit dans la MIB. Le getNext par contre doit demander la valeur réellement dans la MIB.
 
Essaye peut-être un set après l'ajout de la variable. Puis un get du noeud que tu viens d'ajouter (get("1.3.6.1.2.1.43.10.2.1.5" ). Là, le getnext devrait bien te renvoyer le suivant.
 
Si c'est bien ça, il y aura sûrement moyen d'optimiser, parce que là, c'est pas idéal quand même.
 
Edit : ho, le delete de fourbe :o


Message édité par kao98 le 10-04-2009 à 10:57:57

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-04-2009 à 13:38:07    

lol scuze-moi j'ai trouvé la réponse à ma question avant que tu n'ai eus le temps de répondre et du coup j'ai effacé sans savoir que tu allais poster (un delete de fourbe pour résumer :D )
il me reste un prob, c'est pour récupérer l'adresse mac d'une machine.
je fais bien ma requète sur : 1.3.6.1.2.1.2.2.1.6
mais il me renvoie des trucs du style : t³p> ou bien tÜýÒ  [:at war with emo]  


---------------
LaBrute
Reply

Marsh Posté le 10-04-2009 à 13:42:52    

Une adresse MAC, c'est une suite de nombre Hexa. Tu dois recevoir des données numériques que tu affiches sous forme de texte. Il faut sans doute appliquer un format, ou autre, à ce que tu récupères.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-04-2009 à 13:56:36    

kao98 a écrit :

Il faut sans doute appliquer un format, ou autre, à ce que tu récupères.


c'est sur, mais je ne vois pas quelle transformation s'est opérée entre l'adresse au format hexa et le résultat qui m'est renvoyé


Message édité par x-ben le 10-04-2009 à 13:56:52

---------------
LaBrute
Reply

Marsh Posté le 10-04-2009 à 13:58:39    

Qu'est-ce que tu récupères, une chaîne ? Et quelle méthode utilises-tu pour l'afficher ?


Message édité par kao98 le 10-04-2009 à 14:01:08

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 10-04-2009 à 14:07:20    

je ne sais pas te dire précisément ce que je récupère.
c'est le résultat de cette requète que j'écris tel quel dans un fichier csv.
 

Code :
  1. Call oSNMPManager.Variables.Add("1.3.6.1.2.1.2.2.1.6 " )
  2. (...)
  3. Result = oSNMPManager.GetNext( ErrorIndex )
  4. Set oVariablesCollection =  oSNMPManager.Variables


 
puis j'écris: oVariablesCollection.Item(1)


---------------
LaBrute
Reply

Marsh Posté le 10-04-2009 à 14:45:08    

encore un ptit blème lors de ce test:

Code :
  1. If (Left(oSNMPManager.Agent, 3) = 172) Then


(je veux voir si la variable est une adresse IP)
 
ça marche tant que c'est bien une IP mais dès que je tombe sur un truc du genre 01:00 ça me fait une erreur

Code :
  1. Type incompatible: '[string: "1:"]'



---------------
LaBrute
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed