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 :

AIDE : script appelé par un autre ne fonctionne pas alors que seul oui


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut AIDE : script appelé par un autre ne fonctionne pas alors que seul oui
    Bonjour à tous. J'ai besoin d'aide.

    Je dispose d'un script qui est utilisé pour sauver les configurations des éléments d'un réseau. Ce script utilise un autre script (en expect) qui sert à se connecter aux éléments. Lorsque je lance le script "ScriptSaveEAConfig.pl" (qui est mon script de base) manuellement, tout fonctionne correctement. Donc je suis dans le répertoire X et je le lance de là, à ce moment tous les fichiers de config se sauve dans le répertoire d'où j'ai lancé manuellement mon script.

    J'aimerais lancé ce script tous les jours à une certaine heure (parmis d'autres scripts). Pour ce faire je dispose d'un script scheduler appelé x.pl qui est lancé toutes les minutes par la CRON. x.pl détermine à chaque minute quel script il doit lancer. Lorsque j'incorpore "ScriptSaveEAConfig.pl" dans x.pl à ce moment ça ne fonctionne plus.

    Plus précisement, "ScriptSaveEAConfig.pl" est bien lancé (car il crée bien les fichiers de sauvegarde) mais le script expect n'est pas lancé (car les fichiers sont vides et c'est lui qui est sensé me fournir la config).

    Il est à noter que le x.pl est lancé du répertoire X alors que ScriptSaveEAConfig est lancé de X/save_ea.

    Je vous joints le code. Pourriez-vous me dire svp ce qui cloche quand je passe par x.pl ? Je sèche vraiment là !

    Voici la partie du code de ScriptSaveEAConfig qui est utile

    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
     
    chdir('/usr/local/bin/routeur/save_ea/') || die ("erreur chdir");
    		#open SHOWRUN, "./telnetnomem.exp $ip |";
    		@tableau = `$BinPath/save_ea/telnetnomem.exp $ip`;
    		my $dernier_index = @tableau;
     
    	    open (SAVE, ">$save");
    	    my $flag = 0;
    	    #while (my $ligne = <SHOWRUN>){
    		for($xx=0;$xx < $dernier_index ; $xx++){
    		my $ligne = $tableau[$xx];
    		if ($ligne =~ m/Building configuration/){$flag = 1;}
    		if ($ligne =~ m/#exit/){$flag = 0; last;}
    		if ($flag == 0){next;}
    		if ($flag == 1){print SAVE ($ligne); next;}
    	    }
    	    #close SHOWRUN;
    	    close SAVE;
    et voici celle de x.pl (scheduler lancé une fois par minute qui appelle le script de save)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $sql_statement ="UPDATE donnee_reseau.Scheduler SET val = init WHERE script_type = 'ScriptSaveEA';";
                $sth = $dbh->query($sql_statement);
                $tt=1;
                ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
                $ts = "date : $mday-$mon-$year --- time : $hour-$min-$sec";
                $sql_statement ="INSERT INTO donnee_reseau.LogTable (`time`, `action`, `commentaire`) VALUES ('$ts', 'ScriptSaveEAConfig.pl', 'Lancement de ScriptSaveEAConfig');";
                $sth = $dbh->query($sql_statement);
                system ("$BinPath/save_ea/ScriptSaveEAConfig.pl -o=nomem");
    je vous remercie d'avance pour toutes vos réponses

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu as essayé en mettant plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("perl", "$BinPath/save_ea/ScriptSaveEAConfig.pl", "-o=nomem");
    ?

    --
    Jedaï

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Jedai
    Tu as essayé en mettant plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("perl", "$BinPath/save_ea/ScriptSaveEAConfig.pl", "-o=nomem");
    ?

    --
    Jedaï
    salut,

    merci de ta réponse. Je viens de tester avec ta proposition et malheureusement ça ne fonctionne tjrs par.

    Je ne comprends vraiment pas ce qu'il se passe

  4. #4
    Membre habitué Avatar de Leishmaniose
    Homme Profil pro
    Ingénieur Bio-industries
    Inscrit en
    Novembre 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur Bio-industries
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 145
    Points : 141
    Points
    141
    Par défaut
    salut,

    Essaye de mettre le chemin du perl.exe puis le chemin de ton script. Enfin je m'explique : supposons que j'ai un script nommé script.pl qui se trouve sous le répertoire :

    C:\mes_scripts\perl\script.pl

    et que mon perl se trouve comme suit :

    C:\perl\bin\perl.exe

    alors la commande 'system' ressemblera à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("\\perl\\bin\\perl.exe" . " \\mes_scripts\\perl\\script.pl");
    A toi de mettre ça à ta propre sauce...

    NB : les "\\" c'est pour windows, dans ton cas "/" fera l'affaire (à ce que j'ai compris tu es sous unix...)

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Leishmaniose
    NB : les "\\" c'est pour windows, dans ton cas "/" fera l'affaire (à ce que j'ai compris tu es sous unix...)
    En réalité, "/" marche sous windows aussi en général... Par ailleurs, quitte à utiliser des "\", autant mettre ça sous simple quotes et éviter d'avoir à les échapper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system('c:\perl\bin\perl.exe' . 'c:\mes_scripts\perl\script.pl');
    --
    Jedaï

Discussions similaires

  1. [EXE VB6 BATCH] .exe ne fonctionne pas alors que le .vb fonctionne
    Par ellimac60 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/07/2013, 10h14
  2. Réponses: 2
    Dernier message: 29/10/2012, 17h00
  3. [AC-2003] une requête appelée par un bouton ne fonctionne pas
    Par pup1523 dans le forum VBA Access
    Réponses: 12
    Dernier message: 27/06/2012, 09h47
  4. Réponses: 6
    Dernier message: 02/04/2009, 12h52
  5. Réponses: 1
    Dernier message: 22/12/2005, 17h28

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