execution Script shell via ssh2

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 mars 2011, 01:54

heu tu ne vois pas de différence O_o

tu regarde ce qu'il y a dans deux variables différentes, l'une contient un flux l'autre une chaine vide c'ets un grosse différence.
a tout hasard ajoute $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
<?php
$stream = ssh2_exec($connection, "nano /opt/test.txt", 'xterm');
                  if ($stream !== false)
                  {
 $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
                                $retourssh = stream_get_contents($stream);
                        var_dump($errorStream);
                        }
?>

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

30 mars 2011, 08:31

Donc en remplaçant le code j'ai eu une nouvelle erreur, "resource(6) of type (stream) "

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 mars 2011, 15:29

ce n'est pas une erreur cela t'affiche le type (et parfois le contenu) de la variable.

J'ai fait 2 -3 test rapide et je rencontre le même soucis que toi, je peut juste te dire que ton script "semble" correct et qu'il trouve le fichier (sinon la partie avec l'erreur te l'indiquerais).

je ne vois tous simplement pas ce qui peut bloquer a ce niveau faudrait que je fouille un peu, mais peut être que quelqu'un sais déjà ou ça pêche ;)


@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 avr. 2011, 11:59

hum essai avec http://www.php.net/manual/fr/function.ssh2-shell.php voir si tu a un retour !


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

01 avr. 2011, 15:09

Bonjour,

Hum alors sa donne "erreur lors de l'exec ssh2 ..."

Eléphanteau du PHP | 12 Messages

01 avr. 2011, 18:35

En lisant les options de la commande j'ai vu sa

Code : Tout sélectionner

term_type term_type doit correspondre à une des entrées du fichier /etc/termcap du système cible et vaut par défaut vanilla.
Et en regardant bein j'ai pas de dossier "termcap" ni texte "termcap". Est ce normal? est ce que sa ne viendrait pas de la mon problème d'exécution de shell?

Eléphanteau du PHP | 12 Messages

03 avr. 2011, 09:18

Bon je viens de réussir a faire exécuter php un script shell donc je donne la solution. Alors en faite en faisant quelques test j'ai vu qu'en étant dans le dossier ou il y avait le script et a l'aide de la commande ./up.sh ou /opt/server_cs/up.sh, il s'exécutait. Alors que si on se place ailleurs genre dans opt et que je marque /opt/server_cs/up.sh mon script ne marchait plus. Désole de pas avoir fais ce test la... Mais sa me paraissait tellement logique que si je faisais ./up.sh et que sa marchait sa voulait dire que le script était bon. Donc voila ce qui clochait et pourquoi ces heures de souffrances :) je post quand même le résultat si sa intéresse un jour quelqu'un.

Code : Tout sélectionner

<?php require_once('connexion.php'); session_start(); if (isset($_SESSION['authentification']) && isset($_SESSION['privilege']) == "user"){ } else { header("Location:index.php?erreur=intru"); // redirection en cas d'echec exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Panel M's server</title> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <p> Utilisateur <?php echo $_SESSION['login']; ?> </p> <?php $connection = ssh2_connect('localhost', 22); if ($connection !== false) { $pwd = ssh2_auth_password($connection, '*******', '*******'); if ($pwd !== false ) { if ($_SESSION['login'] == "serv1") { $stream = ssh2_exec($connection, "/bin/sh /opt/server_cs1/up.sh"); if ($stream !== false) { header('Location: http://88.190.19.180/panel.php'); } else { echo 'erreur lors de l\'exec ssh2 de serv1 ...'; } } } else { header("Location:index.php?erreur=intru"); } } else { echo 'erreur de mot de passe '; } } else { echo 'erreur connection ssh2'; } ?> </body> </html>
Et voila le script

Code : Tout sélectionner

#!/bin/sh cd /opt/server_cs/ /usr/bin/screen -AmdS serv1 -d -m taskset -c 1 ./hlds_run -game cstrike +ip ********** -port 27016 +maxplayers 16 -pingboost 2 +map de_dust2 +sys_ticrate 10000
Merci beaucoup en tout cas ;)