Récupérer la sortie d'un appli windows-snmp

Récupérer la sortie d'un appli windows-snmp - Perl - Programmation

Marsh Posté le 08-02-2008 à 17:04:17    

Je suis débutant en perl, et j'utilise activeperl sur windows.
Donc, je voudrais récupérer la sortie d'un prog windows dans une variable liste.
 
Le type de code est le suivant:
 
 
 
 

Citation :

$ARGV=@ARGV;
 
my @foo=grep( "192.168.0.2",system("snmpwalk switchcisco .1.3.6.1.2.1.16.1.1" ));    


 
 
 
Mais rien est stocké dans la variable!


Message édité par helloyes le 08-02-2008 à 17:05:14
Reply

Marsh Posté le 08-02-2008 à 17:04:17   

Reply

Marsh Posté le 09-02-2008 à 10:20:30    

system ne rend que le code retour resultat de la commande.
 
Pour récupérer le stdout, il faut utiliser `` (back quote)
 
ensuite grep ne fonctionne pas comme tu le penses (tu n'es pas en shell) : il ne fait que parcourir un tableau (ici à une entrée) et "filtrer" les éléments pour lesquels l'expression rend "false". Pour utiliser grep, il faut splitter suivant les \n et utiliser une expression régulière.

Code :
  1. $ARGV=@ARGV;
  2. my @lines_res =split(/\n/,`snmpwalk switchcisco .1.3.6.1.2.1.16.1.1` );
  3. my @foo=grep{/192.168.0.2/}@lines_res;


Message édité par dreameddeath le 09-02-2008 à 10:21:02
Reply

Marsh Posté le 12-02-2008 à 12:52:09    

Merci ca marche.
Par contre, y'a un moyen d'exprimer simplement l'intervalle 0-24 à l'aide d'expression réguliére?
 

Reply

Marsh Posté le 12-02-2008 à 13:15:44    

/^192\.168\.0\.(\d|1\d|2[0-4])$/


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 12-02-2008 à 22:37:05    

dans le code que j'ai donné, j'aurais tendance à utiliser...
 

Code :
  1. my @foo = grep{/192.168.0.(\d{1,2})/ && $1<=24} @lines_res


 
Mais c'est une question de préférence...

Reply

Marsh Posté le 13-02-2008 à 09:16:04    

200% d'accord les regexs c'est pas fait pour ce genre de chose :o
(mais c'était juste pour répondre à son besoin de regex


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 14-02-2008 à 00:17:36    

Oooupps le boulet,
 
je viens de me rendre compte avec 5 jours de retard que les . doivent être  remplacés par des \.
 
Heureusement anapajari veille en écrivant des regexp valides lui :)

Reply

Sujets relatifs:

Leave a Replay

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