PERL : script appelé par 1 autre ne fonctionne pas alors que seul oui

PERL : script appelé par 1 autre ne fonctionne pas alors que seul oui - Perl - Programmation

Marsh Posté le 27-12-2006 à 11:09:05    

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 :
  1. chdir('/usr/local/bin/routeur/save_ea/') || die ("erreur chdir" );
  2.  #open SHOWRUN, "./telnetnomem.exp $ip |";
  3.  @tableau = `$BinPath/save_ea/telnetnomem.exp $ip`;
  4.  my $dernier_index = @tableau;
  5.     open (SAVE, ">$save" );
  6.     my $flag = 0;
  7.     #while (my $ligne = <SHOWRUN> ){
  8.  for($xx=0;$xx < $dernier_index ; $xx++){
  9.  my $ligne = $tableau[$xx];
  10.  if ($ligne =~ m/Building configuration/){$flag = 1;}
  11.  if ($ligne =~ m/#exit/){$flag = 0; last;}
  12.  if ($flag == 0){next;}
  13.  if ($flag == 1){print SAVE ($ligne); next;}
  14.     }
  15.     #close SHOWRUN;
  16.     close SAVE;


 
 
 
et voici celle de x.pl (scheduler lancé une fois par minute qui appelle le script de save)
 

Code :
  1. $sql_statement ="UPDATE donnee_reseau.Scheduler SET val = init WHERE script_type = 'ScriptSaveEA';";
  2.             $sth = $dbh->query($sql_statement);
  3.             $tt=1;
  4.             ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  5.             $ts = "date : $mday-$mon-$year --- time : $hour-$min-$sec";
  6.             $sql_statement ="INSERT INTO donnee_reseau.LogTable (`time`, `action`, `commentaire`) VALUES ('$ts', 'ScriptSaveEAConfig.pl', 'Lancement de ScriptSaveEAConfig');";
  7.             $sth = $dbh->query($sql_statement);
  8.             system ("$BinPath/save_ea/ScriptSaveEAConfig.pl -o=nomem" );


 
je vous remercie d'avance pour toutes vos réponses

Reply

Marsh Posté le 27-12-2006 à 11:09:05   

Reply

Sujets relatifs:

Leave a Replay

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