Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/06/2012, à 17:00

mauribilis

ssh php lancer application graphique sur le serveur

salut à tous,

avec une interface web j'essaye de faire apparaître une boite de dialogue, en exécutant un script bash mais coment lancer le script bash sur le serveur car via ssh php normal j'obtiens le message "Cannot open display" c'est normal car la boite de dialogue ne peut pas s'afficher sur le navigateur web du client smile ce que je voudrais si possible c'est que la boite de dialogue s'affiche sur l'interface graphique du serveur, voici le code qui exécute le script :

<?php
$hostname = 'adresse ip du serveur à toto';  // adresse de la machine distante (adresse ip ou nom de domaine)
$known_host = '7784BB94B3A68D0267C9885E3B3D66CD'; // fingerprint de la machine distante
$username = 'toto'; // nom de l'utilisateur pour la machine distante
$password = 'mot_de_passe_de_toto';  // mot de passe de l'utilisateur
$commande = 'cd /home/$user/ && ./mon_script.sh';    // commande shell à envoyer à la machine cible (ex: listage de "/")

// Etablissement de la connexion ssh2, port 22
if (false === $connection = ssh2_connect($hostname, 22)) {
  echo 'pas de connexion<br />';
  exit();  // sortie si erreur
  }
else {
  echo 'connexion établie<br />';
  }

// Vérification du fingerprint
$fingerprint = ssh2_fingerprint($connection, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);
if ($fingerprint != $known_host) {
  echo "La clé hôte ne correspond pas !<br />";
  echo "clé renvoyée: ".$fingerprint.'<br />';
  exit(); // sortie si erreur
  }
else {
  echo "fingerprint conforme <br />";
  }

//authentification utilisateur
if (false === ssh2_auth_password($connection, $username, $password)) {
  echo 'Echec identification<br />';
  exit(); // sortie si erreur
  }
else {
  echo 'Identification réussie !<br />';
  }

//exécution command shell sur la machine destinataire
if (false === $stream = ssh2_exec($connection, $commande)) {
  echo "erreur d'exécution commande shell<br />";
  }

// sortie du résultat quand il y en a un
stream_set_blocking($stream, true);
$output = '';
while($ligne = fgets($stream)) {
  $output = $output . $ligne . '<br />';
  }
echo $output;

// Sortie de l'erreur quand il y en a une
$stderr = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
stream_set_blocking($stderr, true);
$output = '';
while($ligne = fgets($stderr)) {
  $output = $output . $ligne . '<br />';
  }
echo $output;
fclose($stderr);
fclose($stream);
?>

merci d'avance

Hors ligne

#2 Le 26/06/2012, à 18:34

Cym13

Re : ssh php lancer application graphique sur le serveur

L'astuce est, dans la session distante ouverte par ssh de définir :

    export DISPLAY=:0

ou bien un autre que le :0 mais c'est le plus courant.

Hors ligne

#3 Le 27/06/2012, à 07:29

mauribilis

Re : ssh php lancer application graphique sur le serveur

2 jours que je cherche merci beaucoup Cyme13 smile

Hors ligne