IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

[reseaux] prog qui lit le process


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3
    Par défaut [reseaux] prog qui lit le process
    salut,

    mon probleme rejoint un peu celui de mike21 sauf que moi j'aurais souhaiter savoir comment pourrais-t-on faire pour lire le nom des process qui tourne et les afficher ds un tabeau?

    par la suite j'aurais souhaiter faire une comparaison du style si le process "man" ne tourne pas alors envoie du message " PROCESS TOURNE PAS"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #! /usr/bin/perl -w
     
    use strict ;
     
    open(PS_F, "ps -A | grep man |");
      while (<PS_F>) {
          ($PID,$tty,$time,$cmd) = split;
          # do whatever I want with the variables here ...
       }
       close(PS_F);
    merci

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Rooggnnntudjuuu , les balises codes !!!
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    J'ai grandement modifié ton code pour arriver à ce que tu attends :
    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
     
    #! /usr/bin/perl -w
     
    use strict ;
     
    `ps -a | grep man > rapport.txt`;
    open FILE, "rapport.txt";
    my($man) = 0;
    while (<FILE>) {
    	if (/man/) {
    		$man = 1;
    	} 
    }
    close (FILE);
    if ($man==0) {
               print "MAN TOURNE PAS !\n";
    }
    Comme en ce moment je bosse sur les expressions régulières, voici comment je procède :
    1) Je redirige la sortie de mes commandes vers un fichier.
    2) Je parse le fichier pour trouver la commande qui m'intéresse (man).
    3) Si je trouve, je modifie une variable préalablement initialisée à 0.
    4) En fin de parsing du fichier, je teste la valeur de retour de ma variable.
    C'est une solution faite en 5 minutes mais je pense qu'il doit y en avoir des plus élégantes.

    @ ++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Hors la considération de l'élégance, il y a énormément de façons de traiter ce problème en Perl. En voici deux de plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    use strict;
     
    my @man=();
     
    open FILE, "ps -a|" or die "J'ai pas pu passer la commande";
    while (<FILE>)
    {
      if (/\sman\s/) { push (@man, $_); }
    }
    close (FILE);
     
    print @man . " occurences de man trouvées :\n";
    foreach (@man) { print "--> $_\n"; }
    1) On récupère le résultat de la commande directement dans un pseudo-fichier (grace au "|" à la fin du nom de fichier du Open), ce qui évite d'avoir à détruire le fichier à la fin ( moi, j'oublie toujours ).

    2) On lit ce fichier ligne par ligne (while = "tant que je gagne, je joue") et on vérifie s'il y a la commande recherchée dans la ligne (attention, le nom de la commande est isolé par des "\s" afin de pouvoir isoler juste "man" et ne pas récupérer "maman").

    3) Chaque fois qu'on a trouvé notre commande, on a rangé la ligne dans un tableau qui sert à se souvenir de ce qu'on a trouvé.

    4) Enfin, on affiche le nombre d'occurences (nombre d'éléments du tableau) et on liste les valeurs trouvées


    Un autre variante, peut être un peu plus directe mais plus obscure et enfumée serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl -w
    use strict;
     
    my @man=();
    my @lignes;
     
    open FILE, "ps -a|" or die "J'ai pas pu passer la commande";
    @lignes=<FILE>;
    close (FILE);
     
    @man=grep (/\sman\s/, @lignes) ;
     
    print @man . " occurences de man trouvées :\n";
    foreach (@man) { print "--> $_\n"; }
    1) On récupère le résultat de la commande directement dans un pseudo-fichier.

    2) On lit ce fichier tout entier dans un tableau (@lignes)

    3) On vérifie s'il y a la commande recherchée dans chaque ligne du tableau, au moyen de la commande perl "grep" (ne pas oublier les "\s") et l'on conserve ces lignes dans notre tableau d'aide-mémoire

    4) Enfin, on affiche le nombre d'occurences (nombre d'éléments du tableau) et on liste les valeurs trouvées.


    Et il y en a encore d'autres ... 8)

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Comme dirait Larry Wall,
    Citation Envoyé par Larry Wall
    make the easy jobs easy, without making the hard jobs impossible
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3
    Par défaut
    you definetly right but 2eurocent is not bad as well...

    merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2006, 01h17
  2. Réponses: 2
    Dernier message: 14/05/2006, 19h36
  3. Réponses: 15
    Dernier message: 25/09/2005, 23h31
  4. Prog qui tourne en rond :-(
    Par FranckDev dans le forum CORBA
    Réponses: 2
    Dernier message: 07/09/2005, 13h50
  5. [VB6] Un prog. qui tourne en continu en parallèle d'autre appli?
    Par jackazerty dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/08/2004, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo