Forum Linux.debian/ubuntu Comment lancer un terminal avec un script shell qui tourne dedans à partir d'une page PHP ?

Posté par  . Licence CC By‑SA.
Étiquettes :
1
29
oct.
2019

Bonjour à tou.te.s,

J'aimerais, à partir d'une page PHP lancer un terminal sur ubuntu avec un script qui s'exécute dedans.

Je ne veux pas que le script me renvoie le résultat dans la page php mais plutôt le voir tourner dans le terminal.

Je viens de tester avec la commande exec(), shell_exec() sans succès, au mieux j'ai un affichage sur ma page mais je n'arrive pas à lancer mon terminal avec le script qui tourne dedans.

Exemple 1 : si je veux à partir d'une page PHP lancer la commande linux (TOP) et que cela lance le terminal afin de voir le résultat

Exemple 2 : on lance à partir d'une page PHP un script "ping" qui lance le terminal à l'écran et on voit le ping tourner dedans.

Merci d'avance pour votre aide.

Cemal

  • # probleme de sécurité

    Posté par  . Évalué à 5.

    deja c'est compliqué à cause de la faille que tu vas ouvrir pour permettre au navigateur de lancer un programme local, voir un shell et executer des choses dedans.

    ensuite il faudrait que ton site php tourne sur la meme machine que ton navigateur car il ne pourra executer que sur lui meme le programme

    l'intérêt d'une page web n'est-elle pas justement de se passer d'un terminal ?

  • # Terminal

    Posté par  . Évalué à 1.

    si ton script tourne seulement sur ton ordinateur (et pas sur un serveur distant) :
    au lieu de lancer htop directement, tu fais xterm -e "htop", et ca devrait lancer ton terminal. si tu préfères un autre terminal que xterm, consulte sa page de manuel et regarde quelle option utiliser.

    après, si ton script est sur un serveur distant c'est plus compliqué, et déconseillé, comme dit dans les commentaires précédents.

  • # Client ou serveur ?

    Posté par  (site Web personnel) . Évalué à 4.

    En général, PHP = site web, le PHP est exécuté sur le serveur et le résultat affiché dans un navigateur web sur le client. C'est peut-être la même machine pendant que tu développes, mais ça garde son importance.

    Dans ton exemple, est-ce que tu veux voir ce qu'il se passe sur le client ou le serveur ? Par exemple, est-ce que la commande top doit afficher la charge du client ou du serveur. Et est-ce que le terminal doit s'afficher sur le client ou le serveur ?

    Dans les deux cas, c'est presque certainement une mauvaise idée et ça ne sera pas faisable sans bidouille, mais les raisons pour ça sont différentes.

  • # hum

    Posté par  (site Web personnel) . Évalué à 2.

    Si tout tourne en local

    Il faudra que ta page PHP cible ton serveur d'affichage, via la variable d'environnement DISPLAY, en local généralement DISPLAY=:0

    Mais
    Ta page PHP est exécutée par un moteur, mod_php ou php-fpm.
    Ce moteur tourne en tant qu'utilisateur, par exemple www/nobody/apache
    Ton serveur d'affichage (ton bureau) tourne en tant que ton utilisateur "mediabos"

    Il faudra donc probablement autoriser ton utilisateur "php" à interragir avec ta session X11 via les commandes xauth/xhost

    Si ton serveur d'affichage et ta page PHP ne tournent pas sur la même machine, de la même manière xauth/xhost mais il faudra autoriser ton serveur d'affichage & écouter en TCP (de mémoire il faut enlever "-nolisten tcp" dans le fichier de conf de xorg) puis exporter dans ta page PHP la variable DISPLAY=192.168.0.1:0 (en mettant ton IP)

    Ca devrait fonctionner …

    Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.