Perl - Gestion processus

Perl - Gestion processus - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-01-2011 à 18:10:18    

Bonjour,
 
J'ai une tache tres reppetitive a faire, du coup je pensais faire un script perl  pour automatiser le truc.  
 
Ce que je dois faire, c'est:
- lancer tcpdump (qui ecris dans un fichier precis)
- lancer une application qui emmet des data sur la boucle locale (qu'elle lit dans un fichier)
A la fin de l'application ci dessus, je veux stopper tcpdump. (et ensuite on passe au fichier suivant)
 
Mon script perl:

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. foreach my $name ( <*.txt> )
  4. {
  5.         print "$name\n";
  6.         if( my $pid = fork) {
  7.                 sleep 1;
  8.                 system "prog $name 127.0.0.1" ;
  9.                 close $pid
  10.         } else {
  11.                 system "tcpdump -B 20480 -w ${name}.cap -s 0 -i lo src 127.0.0.1 and udp port 4000";
  12.         }
  13. }


 
Comme on vois, j'avais tenté de faire un fork et de d'arreter le processus fils. a la fin du programme.  
Mais si je fais un 'ps aux | grep tcpdump' je vois que mes tcpdump tournent toujours....
 
Il y aurait il une solution propre a ce problème?  
 
Merci  :jap:  

Reply

Marsh Posté le 20-01-2011 à 18:10:18   

Reply

Marsh Posté le 20-01-2011 à 19:54:42    

pourquoi tu le fais en perl ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 20-01-2011 à 20:35:30    

pourquoi pas :)
 
Non, aucune raison fondée. Je me galère toujours avec le shell sh. Et j'avais entendu du bien de perl (et dc je me suis que j'allais essayer de m'y mettre).  
 
Si tu vois qqch de plus adapté, je prends. Mon objectif est que ça m'évite de faire ce genre de manip à la main.
 
 
 

Reply

Marsh Posté le 20-01-2011 à 20:49:24    

à l'arrache comme ça :

 


for name in `ls *.txt`
do
  tcpdump -B 20480 -w ${name}.cap -s 0 -i lo src 127.0.0.1 and udp port 4000 &
  tcpdumppid=$!
  prog {name} foo bar && kill ${tcpdumppid}
done

 

:spamafote:


Message édité par black_lord le 20-01-2011 à 20:49:52

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 20-01-2011 à 20:58:14    

Bah oui, je suis une buse...
 
Bah merci du coup de patte :)

Reply

Sujets relatifs:

Leave a Replay

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