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 :

Executer un script shell


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Executer un script shell
    Bonjour,

    Je connais la commande pour executer un script shell en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("ls", $output, $code);

    Mon problème est que j'ai un script a exécuter un peu particulier, que voici:



    Comme vous pouvez le voir, je tape (/opt/local/bin/gnubg) dans le shell et j'arrive dans une sorte d'interface ou je peux rentrer des commandes en rapport avec mon programme (gnubg ici).

    Ce que je veux c'est pouvoir exécuter des commandes dans cette interface via php (par exemple exécuter "ma_commande").

    J'ai donc essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("/opt/local/bin/gnubg ma_commande", $output, $code);
    mais "ma_commande" n'est pas prise en compte.


    J'ai également essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec("/opt/local/bin/gnubg", $output, $code);
    exec("ma_commande", $output, $code);
    Même problème la première ligne marche, mais pas la seconde.

    Est ce que j'ai été assez clair ? Est-ce possible ?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    J'ai jamais essayé mais fait un PIPE
    Ouvre un pipe entre PHP et on programme et pousse les données en entrée dedans: http://php.net/manual/en/function.popen.php

    Edit -- Celle là à l'air plus adaptée à tes besoins que popen:

    http://www.php.net/manual/en/function.proc-open.php

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    $descriptorspec = array(
       0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
       1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
       2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
    );
     
    $cwd = '/tmp';
    $env = array('some_option' => 'aeiou');
     
    $process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);
     
    if (is_resource($process)) {
        // $pipes now looks like this:
        // 0 => writeable handle connected to child stdin
        // 1 => readable handle connected to child stdout
        // Any error output will be appended to /tmp/error-output.txt
     
        fwrite($pipes[0], '<?php print_r($_ENV); ?>');
        fclose($pipes[0]);
     
        echo stream_get_contents($pipes[1]);
        fclose($pipes[1]);
     
        // It is important that you close any pipes before calling
        // proc_close in order to avoid a deadlock
        $return_value = proc_close($process);
     
        echo "command returned $return_value\n";
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse.

    J'ai donc mon processus ouvert mais je n'arrive toujours pas à envoyer mes commandes a l'interface.


    Comment est ce que j'envoie des commandes à un shell interactif via php ?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Avec fwrite, comme dans l'exemple cité plus haut.

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    sinon ya expect.

Discussions similaires

  1. bouton executant un script shell
    Par getrude dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2012, 12h39
  2. Réponses: 7
    Dernier message: 12/09/2011, 19h20
  3. [Runtime] executer un script shell avec java
    Par d_hazem dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 17/03/2009, 10h02
  4. Comment executer un script shell en javascript ?
    Par bross dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/04/2006, 16h57
  5. Exécution d'un script shell
    Par Manu0086 dans le forum Linux
    Réponses: 8
    Dernier message: 15/06/2004, 16h31

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