IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Exécution de commandes Linux


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut [Système] Exécution de commandes Linux
    Bonsoir,

    J'essaye de lancer un script bash faisant un ping via la fonction exec() de php et la commande m'envoie un code de retour égale à 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php 
     
    exec("ping google.fr -c 1", $Tres, $return_var);
     
    foreach ($Tres as &$value)
    		echo "<br/>".$value;
     
    echo  "<br/>".$return_var;
     
    ?>
     
    > sortie écran  : 
    2
    J'ai testé tout un tas de fonction linux pour vérifier. ls -l, cat, echo ... fonctionnent

    Par contre ntpdate ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
     
    exec("ntpdate -v 0.fr.pool.ntp.org", $Tres, $return_var);
     
    foreach ($Tres as &$value)
    		echo "<br/>".$value;
     
    echo  "<br/>".$return_var;
     
    ?>
     
    > sortie écran  : 
    11 May 19:23:39 ntpdate[132]: ntpdate 4.1.1@1.786 Mon Nov 10 16:18:17 CST 2008 (254)
    1
    Et traceroute non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    exec("traceroute google.fr", $Tres, $return_var);
     
    foreach ($Tres as &$value)
    		echo "<br/>".$value;
     
    echo  "<br/>".$return_var;
     
    ?>
     
    > sortie écran  : 
    1
    Est-ce qu'il y aurait des restrictions liés au réseau pour php ? je ne comprends vraiment pas d'où ça peut venir.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 301
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par eracius Voir le message
    Par contre ntpdate ne fonctionne pas :
    tu devrais obtenir quoi comme résultat ?

  3. #3
    Membre éprouvé
    Avatar de matrix788
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 740
    Points : 1 056
    Points
    1 056
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $hote="toto.free.fr"
    system("traceroute $hote");
    system("killall -q traceroute");
    source
    n'oubliez pas de cliquer sur résolu...

    == pas de question technique en MP. Merci ==

  4. #4
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut
    Bonjour, merci pour vos réponses.

    @mathieu
    un ntpdate normal (directement lancé dans un terminal) me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >ntpdate -v 0.fr.pool.ntp.org        
    12 May 08:44:05 ntpdate[581]: ntpdate 4.1.1@1.786 Mon Nov 10 16:18:17 CST 2008 (254)
    12 May 08:44:09 ntpdate[581]: adjust time server 91.121.149.114 offset 0.030836 sec
     
    >echo $?
    0
    @matrix788
    J'ai déjà essayé la fonction system() ainsi que la fonction shell_exec() qui donnent la même chose que exec().

  5. #5
    Membre régulier Avatar de eracius
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 138
    Points : 81
    Points
    81
    Par défaut
    Pour apporter de l'eau au moulin, je précise que je tente d'exécuter ce script PHP sur un Linux particulier embarqué sur un mini PC de marque Moxa (W315 v1.2).

    Je ne voulais pas donner cette précision en espérant que ça ne venait pas du matos mais à priori c'est bien le cas.

    Le linux ainsi que le php sont des versions spécifiques au produit, je vais donc voir avec le fabriquant pour savoir s'ils ont une idée.

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/04/2009, 09h20
  2. Réponses: 1
    Dernier message: 21/08/2007, 18h02
  3. [Système] Exécution de commande et boucle infinie ?
    Par haffouff dans le forum Langage
    Réponses: 9
    Dernier message: 22/05/2006, 16h04
  4. [Système] executer une commande linux
    Par kirbs dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2005, 09h40
  5. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 20/07/2005, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo