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 :

Lancer script shell depuis page PHP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Lancer script shell depuis page PHP
    Bonjour à tous,

    Je voudrais depuis une page web lancer un script shell

    Mon script LectureCV.sh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    cardpeek  -r "pcsc://Identive CLOUD 2700 R Smart Card Reader [CCID Interface] (15427826194951) 00 00" -e "card.connect(1) card.connect(dofile('vitale_2.lua')) card.disconnect(ui.save_view('/var/www/html/Fichier_client.xml')); ui.exit()"
    Le script me permet d'appeler cardpeek, de lire la carte inséré ensuite d'extraire les données en .xml et de quitter le programme

    J'ai essayé pas mal de code pour lancer mon .sh voici quelques codes utilisés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $output = shell_exec("./LectureCV.sh")or die ('pasbon');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $old_path = getcwd();
    chdir('/var/www/html/');
    $output = shell_exec('./LectureCV.sh var1 var2');
    chdir($old_path);
    echo "<pre>$output</pre>";
    Si je lance mon fichier .php depuis le terminal pas de soucis cela fonctionne
    Mais en aucun cas sur ma page web..

    De plus j'ai essayé de mettre dans le fichier sudoers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data ALL=(ALL) NOPASSWD:ALL
    De même ne marche pas

    Mes fichiers sont en 777 et des droits www-data
    Auriez vous une idée pour résoudre mon problème ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    UP

    EDIT: Voici l'erreur que je trouve quand je fais référence à mon fichier .php depuis le navigateur :

    (cardpeek:3812): Gtk-WARNING **: cannot open display:

  3. #3
    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
    C'est visiblement un problème de droit Linux sur le serveur X pour l'utilisateur qui fait tourner PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Je reviens sur le problème

    Car je n'ai pas été clair sur mon projet ( si vous m'avez suivi sur ma borne de commande c'est toujours le même sujet)

    Je dispose d'un pc sous wamp et d'un Raspberry

    Mon pc fait donc tourner un serveur web

    Sur mon Raspberry j'ai un logiciel qui est cardpeek (lecture carte vitale ), j'ai créé un script shell pour le lancer avec des paramètres déja définis (Lecture carte vitale + récupération du fichier xml)

    Je voudrais quand quelqu'un touche la borne pour la déverrouiller, que ma page web exécute mon script qui est sur mon raspberry

    Est-ce possible ?

    J'ai vu les commandes :
    -shell_exec()
    -exec()

    Mais je ne sais pas comment faire appel à mon script qui est sur mon RPI
    J'ai également monter un dossier de partage pour essai mais non

    Merci d'avance

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Alors j'ai avancé mais toujours le même problème cité plus haut

    Voici mon php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     include('Net/SSH2.php');
       $ssh = new Net_SSH2('10.0.0.6');
       $ssh->login('root', 'Supp0rt123') or die("Login failed");
       echo $ssh->exec('/home/pi/Bureau/LectureCV');;
    ?>
    J'ai vu sur un forum d'inclure des fichiers => https://stackoverflow.com/questions/...rver-using-php
    Voir le post de Alireza Fallah

    Donc maintenant voici mon erreur :

    cardpeek: aucun processus trouvé Unable to init server: Impossible de se connecter : Connexion refusée (cardpeek:9659): Gtk-WARNING **: cannot open display:

    Comme m'avait dit sabotage c'est un problème de droit... Mais comment le résoudre ?

  6. #6
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    en donnant tout les droit à l'utilisateur et essayant si ça marche.
    Si oui alors tu réduit petit à petit les droits jusqu'à strict nécessaire pour le fonctionnement sinon c'est que le souci est ailleurs.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    en donnant tout les droit à l'utilisateur et essayant si ça marche.
    Mon script est en 777
    J'ai fais mes test petit à petit

    J'arrive bien à me log sinon j'aurais un message d'erreur

    Dans mon script j'ai mis au début :

    #!/bin/ssh
    ssh pi@10.0.0.6

    Ensuite il y a mon appel à cardpeek avec des paramètres

    Sur ma page php j'ai rajouté quelques trucs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     include('Net/SSH2.php');
       $ssh = new Net_SSH2('10.0.0.6');
       $ssh->login('root', 'Supp0rt123') or die("Login failed");
       echo $ssh->exec('ssh pi@10.0.0.6 sudo /home/pi/Bureau/LectureCV.sh');;
    ?>
    Maintenant je n'ai plus que se message d'erreur :
    Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password).
    La je sèche sur ou mettre tous les droits

  8. #8
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    on est d'accord que tu essais d'exécuter un shell sur le poste ou se trouve le serveur web?
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Non, je dispose d'un pc sous wamp et d'un raspberry

    Je voudrais exécuter mon script shell qui est sur mon raspberry qui comprend le lancement cardpeek qui est également sur mon raspberry à partir de la page php que gère mon serveur wamp

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    J'avance à petit pas mais j'avance

    Voici un autre message

    Unable to init server: Impossible de se connecter : Connexion refusée (cardpeek:2879): Gtk-WARNING **: cannot open display:

  11. #11
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    soit tu vois avec ssh2_auth_agent soit de mémoire le "exec" ne peut être exécuter qu'en local sur ton serveur. donc exec un shel local qui lui effectuera la connexion au raspberry et executera la commande souhaité.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Alors j'ai trouvé la solution j'ai fait comme tu m'as dit mais pas de .shell sur mon serveur ceci est tout sur le raspberry


    Dans mon 1er shell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/sh
    cd /home/pi/Bureau/
    sudo ./Cardpeek.sh
    sudo ./chrome
    Le second ou contient mon lancement de Cardpeek
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    export DISPLAY=:0.0
    xhost +local:root
    echo DISPLAY
     
    cardpeek -r "pcsc://Identive CLOUD 2700 R Smart Card Reader [CCID Interface] (15427826194951) 00 00" -e "dofile('vitale_2.lua') ui.save_view('/home/pi/Bureau/Fichier_client.xml') ; ui.exit()"
     
    cd /home/pi/Bureau
    sudo chmod 777 Fichier_client.xml
    Et enfin dans le php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     include('Net/SSH2.php');
       $ssh = new Net_SSH2('10.0.0.6');
       $ssh->login('root', 'Supp0rt123') or die("Login failed");
       echo $ssh->exec('/home/pi/Bureau/Lanceur');
    ?>
    Avec les fichiers cités au dessus que je remet lors de mon include

    J'ai vu sur un forum d'inclure des fichiers => https://stackoverflow.com/questions/...rver-using-php
    Voir le post de Alireza Fallah
    Voilà,

    Merci à vous pour toutes les réponses que vous m'avez données

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

Discussions similaires

  1. [PHP 5.6] Récupérer fichier "uploadé" pour l'envoyer par mail
    Par Gsdesign dans le forum Langage
    Réponses: 4
    Dernier message: 18/10/2015, 03h05
  2. Réponses: 8
    Dernier message: 10/10/2008, 20h46
  3. Réponses: 7
    Dernier message: 14/02/2006, 12h51
  4. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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