Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
215snmp:70_exercice-pratique [le 15/07/2010 à 09:41] – prof | 215snmp:70_exercice-pratique [le 30/06/2018 à 15:43] (Version actuelle) – prof | ||
---|---|---|---|
Ligne 164: | Ligne 164: | ||
Grâce par exemple au [[http:// | Grâce par exemple au [[http:// | ||
- | Voici un premier code php : | + | Voici un premier code php (>= 5.2) : |
<code php> | <code php> | ||
<?php | <?php | ||
- | $OID = ' | + | // nous souhaitons traiter les OIDs de façon numérique |
snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | ||
+ | |||
+ | $OID = ' | ||
$X = snmprealwalk(' | $X = snmprealwalk(' | ||
foreach($X as $key => $value) { | foreach($X as $key => $value) { | ||
- | $adrMac | + | $macAddr |
$port = $value; | $port = $value; | ||
- | echo $port.' | + | echo $port.' |
} | } | ||
?> | ?> | ||
</ | </ | ||
- | Qui va nous donner le résultat suivant : | + | La fonction '' |
+ | |||
+ | La fonction '' | ||
+ | * la cible (adresse IP ou nom DNS) ; | ||
+ | * la communauté ; | ||
+ | * l'OID d'où l'on veut partir. | ||
+ | |||
+ | Ceci va nous donner le résultat suivant : | ||
< | < | ||
INTEGER: 11 == .1.3.6.1.2.1.17.4.3.1.2.0.5.93.8.128.1 | INTEGER: 11 == .1.3.6.1.2.1.17.4.3.1.2.0.5.93.8.128.1 | ||
Ligne 202: | Ligne 210: | ||
==== Deuxième essai ==== | ==== Deuxième essai ==== | ||
+ | Comme ceci n'est pas un cours de PHP, voici juste une façon de faire, parmi tant d' | ||
- | Dans un premier temps, nous allons retirer dans la valeur le type de la donnée et dans la clé toute la partie OID : | ||
<code php> | <code php> | ||
<?php | <?php | ||
- | $OID = ' | + | // nous souhaitons traiter les OIDs de façon numérique |
snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | ||
+ | |||
+ | $OID = ' | ||
$X = snmprealwalk(' | $X = snmprealwalk(' | ||
foreach($X as $key => $value) { | foreach($X as $key => $value) { | ||
- | $adrMac | + | $macAddr |
$port = explode(': | $port = explode(': | ||
- | echo $port[1].' | + | echo $port[1].' |
} | } | ||
?> | ?> | ||
Ligne 236: | Ligne 245: | ||
13 == 144.230.186.157.115.173 | 13 == 144.230.186.157.115.173 | ||
</ | </ | ||
- | Pour trier correctement | + | Cependant : |
+ | * les adresses MAC (les clés) ne sont pas dans un format exploitable (représentation hexadécimale) ; | ||
+ | * les ports (les données) sont sous forme de texte, si bien qu'un tri se fera suivant | ||
+ | Nous allons donc créer un second | ||
+ | ==== Troisième essai ==== | ||
+ | === L' | ||
+ | Créons une fonction dans laquelle nous injecterons l' | ||
+ | <code php> | ||
+ | function parseMacAddr($T) { | ||
+ | $tok = strtok($T," | ||
+ | while ($tok !== false) { | ||
+ | $oct=dechex($tok); | ||
+ | settype($oct," | ||
+ | if (strlen($oct)==1) $oct = " | ||
+ | $macAddr = $macAddr.$oct.":"; | ||
+ | $tok = strtok(" | ||
+ | } | ||
+ | $macAddr = substr($macAddr, | ||
+ | return $macAddr; | ||
+ | } | ||
+ | </ | ||
+ | La fonction '' | ||
+ | |||
+ | === La solution définitive(? | ||
+ | Finalement, le code suivant : | ||
<code php> | <code php> | ||
<?php | <?php | ||
Ligne 252: | Ligne 285: | ||
} | } | ||
+ | // nous souhaitons traiter les OIDs de façon numérique | ||
+ | snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | ||
+ | |||
$OID = ' | $OID = ' | ||
- | + | ||
- | snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC); | + | |
$X = snmprealwalk(' | $X = snmprealwalk(' | ||
foreach($X as $key => $value) { | foreach($X as $key => $value) { | ||
Ligne 272: | Ligne 306: | ||
?> | ?> | ||
</ | </ | ||
+ | donne quelque chose d' | ||
+ | < | ||
+ | 0 == 00: | ||
+ | 3 == 00: | ||
+ | 4 == 00: | ||
+ | 5 == 00: | ||
+ | 6 == 00: | ||
+ | 7 == 00: | ||
+ | 8 == 00: | ||
+ | 9 == 00: | ||
+ | 10 == 00: | ||
+ | 11 == 00: | ||
+ | 13 == 90: | ||
+ | 23 == 00: | ||
+ | 23 == 00: | ||
+ | 24 == 00: | ||
+ | 24 == 00: | ||
+ | </ | ||
+ | Notre tableau '' | ||
+ | ===== Pour finir ===== | ||
+ | Beaucoup d' |
Exercice pratique: Dernière modification le: 15/07/2010 à 09:41 par prof