Bonjour,
Je n'ai pas fait de dev depuis longtemps et j'avais fait très peu de perl...
Voilà mon pb:
J'ai en entré la commande suivante:
nms:/usr/local/cacti/scripts# snmpget -m all -c public -v2c 172.16.255.105 cnfPSPacketSizeDistribution.0
CISCO-NETFLOW-MIB::cnfPSPacketSizeDistribution.0 = Hex-STRING: 00 02 01 72 01 07 00 1C 00 0B 00 05 00 A4 00 0F
00 02 00 03 00 03 00 04 00 05 00 0A 00 04 00 03
00 03 00 02 00 13 00 4B 00 00 00 00 00 00 00 00
00 00 00 00
qui correspond à ces statistiques:
router#sh ip cache flow
IP packet size distribution (922954 total packets):
1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480
.002 .370 .263 .028 .011 .005 .164 .015 .002 .003 .003 .004 .005 .010 .004
512 544 576 1024 1536 2048 2560 3072 3584 4096 4608
.003 .003 .002 .019 .075 .000 .000 .000 .000 .000 .000
Je voudrais faire un script perl qui parse la sortie de la commande snmget et qui retourne:
32:0,2 64:37 97:26,3 128:2,8 160:1,1 192:0,5 224:1,5 156:1,5 288:0,2 320:0,3 352:0,3 384:0,4 416:0,5 448:1 480:0,4 512:0,3 544:0,3 576:0,2 1024:1,9 1536:7,5 2048:0 2560:0 3072:0 3584:0 4096:0 4608:0
Où :
32:0,2
32 est une valeur fixe, 0,2 est un pourcentage qui correspond à la valeur des deux premiers octet de la liste Hex-STRING diviser par cent (00 02).
64:37
64 est une valeur fixe, 37 est le pourcentage qui correspond à 01 72 convertie en décimal puis diviser par cent.
M'enfin, voilà où j'en suis de mon script:
mais cela ne m'affiche que la premiére ligne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #!/usr/bin/perl open(PROCESS, "snmpget -m all -c public -v2c 172.16.255.105 cnfPSPacketSizeDistribution.0|"); $pcksize = <PROCESS>; close(PROCESS); $pcksize =~ m/(.*Hex-STRING: )(.*)/; print $2;
Autrement dit, je rame quelqu'un pourrait m'aider ou me donner quelque mot clef ou un programme s'approchant de ça (parseur + hexadecimal)?
Pour commencer je cherche a récupérer la chaine Hex-STRING, dans un tableau…
Merci de m'avoir lut jusqu'ici!
Partager