Имам грешки при разрешаване с perl.
Perl скрипт извиква друг чрез конфигурационен файл. executeParsers.pl --> четене на конфигурационен файл --> извикване на parser1.pl
Грешка се случва само когато има 2 реда в конфигурационния файл. Файл: ssh.conf*
OBS,9 Cegetel,Altitude;sh ip int;shipint;parser1.pl
OBS,9 Cegetel,Altitude;sh int status;shintstatus;parser2.pl
Файл: executeParsers.pl
$DIR="/tech/gtr/scripts/osm/environnement_qualif/scan-rh2";
open(SSHCONFIG, "$DIR/bin/ssh.conf");
while (<SSHCONFIG>) {
$ifname = (split)[0];
my @status = split /;/;
for (@status) {
print ("$_ \n");
}
#@ligne = split(/;/, $_ );
$listop = $status[0];
$listcmd = $status[1];
$fileprefix = $status[2];
print "prefixe trouve $fileprefix \n";
$parsername = $status[3];
$tab=`find $DIR/working-dir -type f -name \"$fileprefix*\"`;
print "j'ai trouve les fichiers suivant : $tab \n";
@table = split(/\n/,$tab);
for ($index = 0; $index <= $#table; $index++) {
print "le fichier numero $index est : $table[$index]\n";
$fichier = $table[$index];
print "fichier traite : $fichier\n";
system("/usr/bin/perl $DIR/parsers/$parsername $fichier");
}
}
close (SSHCONFIG);
И файл parser1.pl
$fichier=$ARGV[0]; # fichier a traiter par le parser
warn $fichier;
$output=$fichier."_OUTPUT";
chomp($fichier); # Suppression des \n incongrus
@cstemp1 = split(/\//,$fichier);
@cstemp2 = split(/_/,$cstemp1[$#cstemp1]);
$cs = $cstemp2[1];
$ip = $cstemp2[2];
my ($etat, $ifname, $myip); # Variables a la chaine
# Ouverture des flux d'entrée et de sortie
open(DATA,$fichier) || die ("Erreur d'ouverture de $fichier\n") ;
close(DATA);
Сега какво се случва при изпълнение?
perl executeParsers.pl
OBS,9 Cegetel,Altitude
sh ip int
shipint
parser1.pl
prefixe trouve shipint
j'ai trouve les fichiers suivant : /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_<ip>
le fichier numero 0 est : /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_<ip>
fichier traite : /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_<ip>
Warning: something's wrong at /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/parsers/parser1.pl line 7.
Erreur d'ouverture de
sh: line 1: /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_<ip>: Permission denied
OBS,9 Cegetel,Altitude
sh int status
shintstatus
parser2.pl
prefixe trouve shintstatus
j'ai trouve les fichiers suivant :
Сега, ако изтривам втория ред от моя файл ssh.conf, той работи. Предполагам, че има нещо нередно в края на реда.
$fichier
е празен. - person choroba   schedule 04.08.2014$^X
или$EXECUTABLE_NAME
, ако използватеuse English '-no_match_vars';
. - person Jonathan Leffler   schedule 04.08.2014system("/usr/bin/perl", "$DIR/parsers/$parsername", "$fichier");
използване на списък от аргументи заsystem
. Това изобщо избягва изпълнението на обвивката. Съобщението за грешка е любопитно, очевидно идентифицира това, което според вас е името на файла, сякаш е името на скрипта. Какво точно имате в линията shebang наparser1.pl
? - person Jonathan Leffler   schedule 04.08.2014