Bonjour a tous
J’utilise depuis pas mal de temps les composants indy pour faire des requêtes SNMP via TIDSNMP
Je viens de tomber sur un cas particulier en voulant lister les volumes d’un serveur HPUX
j’interroge la liste des oid via 1.3.6.1.4.1.11.2.3.1.2.2.1.1
et là j’obtiens un résultat inattendu dans les oid
Et oui une valeur négative dans l’oid lié sans doute à une limitation du type de variable utilisée dans le composant car la valeur qui devrait être retourné est 2147491841
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741825.0";"1073741825" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741827.0";"1073741827" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741828.0";"1073741828" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741829.0";"1073741829" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741830.0";"1073741830" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741831.0";"1073741831" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073741832.0";"1073741832" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.1073807361.0";"1073807361" "1.3.6.1.4.1.11.2.3.1.2.2.1.1.-2147475455.0";"-2147475455"
Voici ce que me donne snmpwalk
Voici la fonction que j’utilise pour lister les résultats
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 snmpwalk -v 2c -c cccccccc srv .1.3.6.1.4.1.11.2.3.1.2.2.1.1 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741825.0 = INTEGER: 1073741825 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741827.0 = INTEGER: 1073741827 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741828.0 = INTEGER: 1073741828 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741829.0 = INTEGER: 1073741829 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741830.0 = INTEGER: 1073741830 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741831.0 = INTEGER: 1073741831 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073741832.0 = INTEGER: 1073741832 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.1073807361.0 = INTEGER: 1073807361 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147491841.0 = INTEGER: -2147475455 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147495937.0 = INTEGER: -2147471359 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147495938.0 = INTEGER: -2147471358 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147495939.0 = INTEGER: -2147471357 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147500033.0 = INTEGER: -2147467263 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147528705.0 = INTEGER: -2147438591 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147532801.0 = INTEGER: -2147434495 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147536897.0 = INTEGER: -2147430399 SNMPv2-SMI::enterprises.11.2.3.1.2.2.1.1.2147540993.0 = INTEGER: -2147426303
Y a-t-il un moyen de palier à ce PB de valeur négative dans l’OID via une option de TIDSNMP que je n’aurais pas vue
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 procedure getLstOIDresult (fIdsnmp : tidsnmp ; strMIB : string; var lst : tstrings); // ___________________________________________________________________________ // | procedure getLstOIDresult | // | _________________________________________________________________________ | // || permet de lancer une requête snmp et de récupérer une liste de résultat || // ||_________________________________________________________________________|| // || Entrées | strMIB : string || // || | requette snmp || // ||_________|_______________________________________________________________|| // || Sorties | var lst : tstrings || // || | liste de resultat || // ||_________|_______________________________________________________________|| // |___________________________________________________________________________| var indexIOD : integer; begin lst.Clear ; fIdsnmp.Query.Clear ; fIdsnmp.Query.MIBAdd(strMIB ,''); fIdsnmp.Query.PDUType := PDUGetNextRequest ; while fIdsnmp.SendQuery do begin if pos (strMIB,fIdsnmp.Reply.MIBOID[0]) <> 1 then Break; for indexIOD := 0 to fIdsnmp.Reply.ValueCount -1 do begin if fIdsnmp.Reply.Value[indexIOD] <>'' then if lst.IndexOf(fIdsnmp.Reply.Value[indexIOD])=-1 then lst.Add(fIdsnmp.Reply.Value[indexIOD]); fIdsnmp.Query.Clear; fIdsnmp.Query.ID := fIdsnmp.Query.ID + 1; fIdsnmp.Query.MIBAdd(fIdsnmp.Reply.ValueOID[0], ''); fIdsnmp.Query.PDUType := PDUGetNextRequest; end; end; end;
Partager