[langage] script perl cmd system
Salut
je voudrai faire un script perl qui execute des commande suivant le parametre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #!/usr/bin/perl -w
use strict;
$cmdstart="/home/kacedda/local/bin/prog -d /home/kacedda/local/etc/prog.cfg";
$cmdstop="killall prog";
if($ARGV[0] eq "start")
{
system $cmdstart ;
print "Prog Started\n";
}
if($ARGV[0] eq "stop")
{
system($cmdstop);
print "Prog Stopped\n";
}
if($ARGV[0] eq "restart")
{
system($cmdstop);
system($cmdstart);
print "Prog Restarted\n";
} |
Ce qui dedvrait se passer:
Suivant le parametre passer le prog deevrait se lancer,sarreter ou redemmarer
Ce qui se passe:
Code:
Global symbol "$cmdstart" requires explicit package name at ./pl_nagios line 5.
Et une ligne pour chaque cmd comme ca.
PS:Si jexecute le prog direct en ligne de cmd pas dee probleme ca marche:
# /home/kacedda/local/bin/prog -d /home/kacedda/local/etc/prog.cfg
Si kkun a un idee...
Re: script perl cmd system
Citation:
Envoyé par kacedda
Salut
je voudrai faire un script perl qui execute des commande suivant le parametre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #!/usr/bin/perl -w
use strict;
$cmdstart="/home/kacedda/local/bin/prog -d /home/kacedda/local/etc/prog.cfg";
$cmdstop="killall prog";
if($ARGV[0] eq "start")
{
system $cmdstart ;
print "Prog Started\n";
}
if($ARGV[0] eq "stop")
{
system($cmdstop);
print "Prog Stopped\n";
}
if($ARGV[0] eq "restart")
{
system($cmdstop);
system($cmdstart);
print "Prog Restarted\n";
} |
Ce qui dedvrait se passer:
Suivant le parametre passer le prog deevrait se lancer,sarreter ou redemmarer
Ce qui se passe:
Code:
Global symbol "$cmdstart" requires explicit package name at ./pl_nagios line 5.
Et une ligne pour chaque cmd comme ca.
PS:Si jexecute le prog direct en ligne de cmd pas dee probleme ca marche:
# /home/kacedda/local/bin/prog -d /home/kacedda/local/etc/prog.cfg
Si kkun a un idee...
Tu utilises 'use strict;' mais je vois que tu ne sais pas a quoi cela sert ;).
Avec use strict (et surtout avec -w), il faut expliciter la portee de la variable.
Essaye cela :
Code:
1 2 3 4 5 6 7
|
#!/usr/bin/perl -w
use strict;
my $cmdstart="/home/kacedda/local/bin/prog -d /home/kacedda/local/etc/prog.cfg";
my $cmdstop="killall prog"; |
Ca fonctionnera mieux.