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 :

Aide fonction Php exec


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Aide fonction Php exec
    Bonjour,

    J'ai un petit problème :/

    J'ai un script bash qui va effectuer de nombreux traitements sur des blocs de textes et va finir par retourner quelques lignes en gros le retour donne un texte de cette forme :

    blablabla
    blablabla
    encore blablabla

    (avec un contenu plus intéressant )

    J'ai donc fait dans ma page une fonction basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    function bash($conf){
    	exec('/var/www/parser Ethernet 1/1');
    }	
    ?>

    Lorsque j'appelle cette fonction en dur pour faire mes test, je sais que le script est exécuter car je vois les opérations réalisé par celui-ci sur le système.
    Cependant c'est pour le retour que ça se complique. Je n'ai pas compris la syntaxe donc je sais exécuter la commande en dur mais pas récupérer les lignes que le script retourne.


    Toujours sur cette même fonction, je voudrais appeler mon bash à l'aide d'une variable car il y a de multiples dessus et mon utilisateur pourrait choisir une de celle-ci.
    La riable $conf est la variable qui contient le nom de l'interface, cependant pas moyen de trouver la bonne synthaxe faire marcher l'appel avec la variable et le retour

    Voilà par exemple un de mes essais ( qui ne fonctionne pas bien entendu )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    function bash($conf){
    	exec('/var/www/parser $conf', $retour);
    	echo "$retour";
    }	
    ?>
    En résumé :

    Fonction php appelant un script retournant quelques lignes
    - Appel de la fonction via un chemin fixe et un argument, la variable $conf
    - je voudrais récupérer le output de mon script dans ma variable $retour.

    Merci à vous.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    dans la doc ils disent que la valeur de retour est un tableau. Vu qu'echo sert a recevoir du TEXTE par le serveur ce n'est pas un bon outil de débuggage. essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec('/var/www/parser $conf', $retour);
    var_dump($retour);

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Merci pour cette réponse.
    Je constate donc qu'avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<?php
    	function bash($conf){
    	exec('/var/www/parser Ethernet1/1 ', $retour);
    	print_r($retour);
    	}	
    	?>
    J’obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => interface Ethernet1/1 [1] => description Vers N5K-D4-1 eth1/1 [2] => switchport mode trunk [3] => channel-group 12 mode active )
    Avec ta commande var_dump j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(4) { [0]=> string(21) "interface Ethernet1/1" [1]=> string(34) " description Vers N5K-D4-1 eth1/1" [2]=> string(23) " switchport mode trunk" [3]=> string(30) " channel-group 12 mode active" }
    Ma variable contient donc bien mes informations c'est bon !

    Maintenant comment réussir à l'afficher convenablement ?

    Je voudrais une présentation normale, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    interface Ethernet1/1
    description Vers N5K-D4-1 eth1/1
    switchport mode trunk
    channel-group 12 mode active
    Merci d'avance.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    c'est la base afficher une variable...
    ton var_dump/print_r(c'est quasi la meme chose) t'indique que ta variable est un tableau(array veut dire tableau), mais c'est un outil de debugage, contrairement a echo.
    afficher une valeur d'un tableau c'est aussi bète qu'afficher n'importe quelle valeur

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Après quelques tests voici la bonne syntaxe et l'affichage du tableau sans les infos de debug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<?php
    	function bash($show_run){
     
    	exec("/var/www/parser $show_run", $retour);
    	foreach ($retour as $retour) 
    	{
        echo "$retour <br>";
    	}
     
    	}	
    	?>
    Oui ce n'était pas compliqué je suis d'accord, mais je n'ai pas eu l'occasion de beaucoup jouer avec des tableaux ;-)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plus proprement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	function bash($show_run){
     	        exec("/var/www/parser $show_run", $retour);
    	        foreach ($retour as $value) 	{
                         echo $value, '<br/>';
    	       }
     
    	  }	
    	?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Documentation ou Aide sur les fonctions php
    Par paissad dans le forum Langage
    Réponses: 4
    Dernier message: 10/02/2009, 05h59
  2. [Système] Commande wget via la fonction php exec()
    Par Sh4dow49 dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2008, 15h02
  3. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  4. [Système] aide fonction exec
    Par john123 dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2008, 09h26
  5. besoin d'aide fonction avec fichier (debutant)
    Par boby61 dans le forum Débuter
    Réponses: 9
    Dernier message: 14/03/2005, 11h22

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