Lancer un programme graphique en .sh

Bonsoir.

Je souhaite lancer un script .sh depuis un fichier .php sur ma machine.
Dans ce .sh il y'a un programme, appelons le ... "firefox".

Je souhaite lancer firefox via un ce script, mais ce dernier ne peut pas s'ouvrir car il n'y a pas d'interface graphique (logique) alors comment faire en sorte d'ouvrir firefox qui demande une interface graphique à partir de mon script shell ?

Comprenez-vous ?

Quelqu'un aurait une idée ?
Je vous remercie.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Sans être indiscret, quel est le but de ta manip ?
    Ton fichier PHP est-il lancé en dehors d'un serveur HTTP ?

    Je suppute que tu es sur un OS Unix-like.

    Si tu dois chercher des informations sur une page web, utilise plutôt l'interface PHP à la bibliothèque cURL.
    La doc PHP: Client URL Library
    Des exemples: PHP/CURL -- using libcurl with PHP Il vaut mieux éviter les nullissimes exemples de la documentation PHP officielle!!!

    Utilise ensuite les fonctions/bibliothèques nécessaires: XML Parse, outils fichiers, chaînes etc.

    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    1. Pour tout dire, je souhaite lancer un fichier .sh (à savoir que c'est le logiciel Teamspeak client), hors ce dernier à besoin d'un affichage graphique quand il s'ouvre, hors, lorsque je donne l'ordre d'ouverture sur le serveur, il me dit qu'il n'y a pas d'affichage ... Du coup j'aurais aimé savoir s'il y'avait un moyen de pouvoir ouvrir mon programme en "émulant" un affichage sur la machine.

      Le programme que je veux lancer se trouve sur le serveur.
      1. Salut,
        en gros :
        si tu autorises les connections entrante de ton afficheur X sur le client
        xhost +ip_du_serveur

        alors tu peux utiliser
        DISPLAY=ip_du_client:0.0 Teamspeak.sh
        sur le serveur.

        Pour sécuriser ça il faut utiliser la redirection de port à travers ssh, à démêler...
      2. Modérateur
        Dans ce cas je ne vois pas le rapport avec PHP. ! Lance plutôt un serveur vnc et lance y le client graphique.ou je ne sais quoi.
        Connecte-toi au serveur vnc selon les besoins.depuis le/les clients autorisés. (configure iptables sous Linux par exemple)
        Cette méthode sera bien plus robuste que de lancer le client graphique par Xforwarding ou l'antédiluvien xhost.
      3. jisisv : Le souci dans son cas c'est que l'interface graphique est lancée par le serveur, pas par le client...

        Mais, index, as-tu besoin de l'affichage ou tu as juste besoin que le prog se lance ?
        Si tu as juste besoin du prog mais pas de l'affichage, tu peux utiliser xvfb.
      4. @Flachy JoeJ'ai un petit soucis lors de l'exécution de la commande: xhost +ip_du_serveur

        xhost: unable to open display ""
      5. Modérateur
        Que fait vnc , si ce n'est de fournir un serveur X ...heuh... comment dirais-je virtuel ? Avec l'avantage de pouvoir s'y connecter depuis une machine distante.
    2. En fait je m'exprime mal.

      - J'ai un .php qui exécute un fichier .sh dans le .php il y'a simplement une fonction qui exécute le script.
      - Le .sh ouvre un logiciel nommé "ts3 CLIENT" => sur le serveur même.

      HORS

      ts3client a besoin d'une interface graphique pour s'ouvrir ... Et je ne sais pas comment on peut autoriser l'ouverture de l’exécutable vu qu'il devra être autorisé à utiliser un serveur X (d'affichage)

      C'est plus clair ? :s
      1. Si un exécutable n'a pas d'option pour fonctionner sans X il lui faut X !
        Après X peut être sur le client (même si l'exécutable est sur le serveur) en faisant du X forwarding et en utilisant par exemple "ssh -X" (ou du xdmcp mais il faut X d'installé et de configuré pour l'autoriser) pour se connecter sur le serveur.
        Cela implique toutefois que le client qui lance l’exécutable sur le serveur ait un serveur X et que la configuration du démon sshd du serveur l'autorise.
        Sur Windows je connais Cygwin qui propose un serveur X gratuit, sur Linux la question ne se pose généralement pas car la plupart utilisent déjà un environnement X qui lance alors l'application distante forwardée comme une application locale ... Normalement on se retrouve avec un $DISPLAY différent de null et pointant vers le client (si tout est bien configuré).