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

Langage Perl Discussion :

Problème parcours de fichier en PERL


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Par défaut Problème parcours de fichier en PERL
    Salut tout le monde.

    J'ai un petit souci et j'espère que vous allez pouvoir m'aider.

    J'ai écris un petit script PERL qui a pour but de vérifier que des répertoires sont bien montés entre un serveur Linux et un serveur Windows 2003.

    Voilà le squelette de mon script :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #! /usr/bin/perl
     
    # output mount
    system("mount > /root/mountlog2");
     
    # open log
    unless(open(INPUT, "/root/mountlog2"))
    {
            die("cannot open /root/mountlog2\n");
    }
     
    # parse log
    my $found=0;
     
    while(<INPUT>)
    {
            $line=$_;
            chomp($line);
            print $_;
     
            if($line =~ m!^//10.27.0.136!)
            {
                    $found++;
     
                    unless(open(INPUT, "/home/postgresql/mnt/devwin1/checkmountphptmp"))
                    {
                            system("sleep 120");
                            system("umount -f /home/postgresql/mnt/devwin1/phptmp");
                            $found--;
                    }
            }
            elsif($line =~ m!^//10.27.0.136/Backup!)
            {
                    $found++;
     
                    #system("echo 1 > /home/postgresql/mnt/devwin1/checkmountsave_pnb");
                    unless(open(INPUT, "/home/postgresql/mnt/devwin1/checkmountsave_pnb"))
                    {
                            system("sleep 120");
                            system("umount -f /home/postgresql/mnt/devwin1/save_pnb");
                            $found--;
                    }
            }
            elsif
     
            etc...
    }
    Donc en gros, je mets le résultat de 'mount' dans un fichier, puis j'ouvre ce fichier et je le parcours.
    Je vérifie que mes répertoires sont bien montés comme ceci.
    Mais apparemment, le fichier n'est pas parcouru dans sa totalité. En effet, vu que j'ai remarqué un problème, j'ai fait afficher via print la variable $_, et voilà ce que cela donne :

    //10.27.0.133/phptmp on /home/postgresql/mnt/serveur1/phptmp type cifs (rw,mand)
    nfsd on /proc/fs/nfsd type nfsd (rw)
    //10.27.0.134/phptmp on /home/postgresql/mnt/serveur2/phptmp type cifs (rw,mand)
    1
    Je vous passe un certain nombre de lignes qui ne servent à rien...

    Alors que dans mon fichier mountlog2, j'ai :

    //10.27.0.133/phptmp on /home/postgresql/mnt/serveur1/phptmp type cifs (rw,mand) nfsd on /proc/fs/nfsd type nfsd (rw)
    //10.27.0.134/phptmp on /home/postgresql/mnt/serveur2/phptmp type cifs (rw,mand)
    //10.27.0.136/phptmp on /home/postgresql/mnt/serveur3/phptmp type cifs (rw,mand)
    //10.27.0.136/Backup on /home/postgresql/mnt/serveur3/save_pnb type cifs (rw,mand)
    etc...
    On voit donc bien qu'il s'arrête après la ligne concernant le serveur 2, et que $_ m'affiche '1'.

    Il y a quelque chose qui m'échappe, mais quoi ???

    Si quelqu'un a la solution, je lui en serai très reconnaissant car là, je sèche. je ne suis pas super familier avec PERL et c'est donc peut-être tout simple...mais pas pour moi

    Merci d'avance pour vos réponses.

    Tchuss, @+, jinpol...

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Etrange...

    Cela dit, tu peux remplacer le début de ton script par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #! /usr/bin/perl
    my $found=0;
     
    foreach my $line (qx(mount)) {
      chomp($line);
      print $_;
     
      if($line =~ m!^//10.27.0.136!)
      ...
    Ca ne résoudra probablement pas ton problème, mais cela évite la création d'un fichier temporaire inutile.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Par défaut
    Salut, et merci pour ta réponse.

    Comme tu dis, ça ne résoudra peut-être rien, mais je vais quand même mettre ça en place. Et puis on sait jamais...

    Je fais ça dès que je peux et je te tiens au courant...

    jinpol...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Par défaut
    Bon, et bien en fait, en utilisant ta méthode, ça marche.
    Et au final, j'ai compris pourquoi je pense.

    En effet, à chaque ouverture de fichier que je faisais, j'utilisai l'identifiant INPUT, donc en fait, au bout d'un moment, je pense que mon while ne parcourait plus le bon fichier

    Et effectivement, dans le fichier parcouru, y'avait un 1 et rien d'autre.

    A ma décharge, j'ai récupéré ce script d'un collègue et je l'ai modifié, mais ce n'est pas moi qui avait écrit cette partie là :p

    En tous cas, ça marche, merci

    Tchuss, @+, jinpol...

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Comme quoi, parfois (souvent), le plus simple est le plus efficace

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 138
    Par défaut
    Yep, et encore merci

    Citation Envoyé par Philou67430 Voir le message
    Comme quoi, parfois (souvent), le plus simple est le plus efficace

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

Discussions similaires

  1. problème avec un fichier CGI perl
    Par anassss dans le forum Web
    Réponses: 17
    Dernier message: 24/08/2011, 10h57
  2. Problème parcours fichier xml.
    Par imen1986 dans le forum APIs
    Réponses: 9
    Dernier message: 17/05/2010, 01h34
  3. [PERL] Problème Fusion de fichiers : TUnit
    Par nicolep dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 21/11/2008, 16h36
  4. Réponses: 11
    Dernier message: 09/06/2008, 14h10
  5. [DOM] problème lors du parcours du fichier xml
    Par krfa1 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/05/2007, 07h24

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