Comment executer des commandes depuis un script [Résolu/Fermé]

Signaler
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013
-
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013
-
Bonjour tt le monde je veux executer deux commande depuis un script et les voila:

sudo ifdown wlan1
sudo ifup wlan1

j ai essayer avec system "sudo ifdown wlan1" mais sa ne marche pas!quelqu un a-t-il une idée comment résoudre ce problème svp?

2 réponses

Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Tu peux te servir de $? pour tenter de déterminer la cause, en utilisant la méthode recommandée dans la documentation https://perldoc.perl.org/functions/system.

#!/usr/bin/perl
use strict;
use warnings;

my @args = ("sudo", "ifdown", "wlan1");

system (@args) == 0 or die "system @args failed: $?";

if ($? == -1)
{
  print "failed to execute: $!\n";
}
elsif ($? &127)
{
  printf "child died with signal %d, %s coredump\n",
    ($? &127), ($? &128) ? 'with' : 'without';
}
else
{
  printf "child exited with value %d\n", $? >>8;
}

Sinon, si l'utilisateur qui lance sudo en lançant ce script n'est pas un sudoer, et n'est pas autorisé à lancer ce script sans mot de passe, c'est un peu normal que cela échoue.


Dal
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013

Bonjour je l'ai résolu en changeant exec par system..voila ce qu'est devenu mon code en esperant que sa aidera quelquen:

$ENV{PATH} = "/sbin/";
system 'ifdown','wlan1';
system 'ifup','wlan1';

en faite le /sbin existe deja dans $PATH mais sans la 1ère ligne sa ne marche pas et je sais pa pourquoi..le plus important c'est que le problème n'est plus :)) merci pour tt le monde