我对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文件中删除第二行,它就可以工作了。我想这句话的结尾有什么问题。
发布于 2014-08-04 13:56:58
$fichier可能不包含您认为它所做的事情。使用warn $fichier;找出它在使用前包含的内容。另外,使用打开的三个参数和$!变量告诉您为什么失败:
open(my $fh, "<", "input.txt")
or die "cannot open < input.txt: $!";http://perldoc.perl.org/functions/open.html
发布于 2014-08-05 07:40:19
又一次回程错误。
在打印vars的全部输出时:
prefixe trouve shipint
operateurs : OBS,9 Cegetel,Altitude
commandes : sh ip int
parser name : parser1.pl
j'ai trouve les fichiers suivant : /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_126.110.101.250
le fichier numero 0 est : /tech/gtr/scripts/osm/environnement_qualif/scan-rh2/working-dir/shipint_952923S1_126.110.101.250这意味着$parsername上有一个回车返回,必须用
$parsername =~ s/\s+\z// ;https://stackoverflow.com/questions/25120286
复制相似问题