[RESOLU] Commande ssh et php

Eléphant du PHP | 134 Messages

29 juil. 2013, 14:56

Bonjour je souhaite lancer un serveur de jeux via une page php que j'ai faite mais j'ai un peu de difficulté avec les variable php pour les inclure dans la commande ssh pouvez vous m'aider ?
voici ma page test
<?php
function ssh($command){
    $host = "*******";
    $port = "*******";
    $login = "*****";
    $mdp = "*****";
    if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
    if(!($con = ssh2_connect($host, $port))){
        echo "échec connexion\n";
    } else {
        if(!ssh2_auth_password($con, $login, $mdp)) {
            echo "échec authentification\n";
        } else {
            if (!($stream = ssh2_exec($con, $command ))) {
                echo "échec de l'exécution de la commande\n";
            } else {
                stream_set_blocking($stream, true);
                $data = "";
                while ($buf = fread($stream,4096)) {
                    $data .= $buf;
                }
                fclose($stream);
                return $data;
            }
        }
    }
}
?>
<h3>Ajouter un serveur</h3>
<div class="text">Completez le formulaire suivant pour ajouter un serveur :</div>
<form method="post">
	<fieldset>
		<p><label>Alias :</label><input type="text" class="text-medium" name="alias" /></p>
		<p><label>Type :</label><select name="type">
		<option value="1">Serveur de jeu</option>
		<option value="2">Serveur vocal</option>
		</select></p>
	</fieldset>
	<fieldset>
		<p><label>Exécutable du serveur :</label><input type="text" class="text-medium" name="bin" /></p>
		<p><label>Répertoire de l'éxécutable :</label><input type="text" class="text-medium" name="path" /></p>
		<p><label>Options de lancement :</label><textarea name="options"></textarea></p>
		<p><label>Nom du screen :</label><input type="text" class="text-medium" name="screen" /></p>
	</fieldset>
			<button type="submit" name="start" class="button"><img src="icones/tick.png"> Ajouter ce serveur</button> <button type="reset" class="button negative"><img src="icones/cross.png"> Reset des champs</button>
	
</form>

<?php
if (isset($start)) {
   $bin=$_POST['bin'];
   $path=$_POST['path'];
   $screen=$_POST['screen'];
} else {
   $start = "cd ". $path . " && screen -AmdS " . $name . " ./" . $bin . " " . $options;
}




?>

merci et bonne journée !

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

29 juil. 2013, 20:05

salut,

qu'est ce que ne sais pas faire ?

il y a tous ce dont tu a besoin dans ce code.


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

Eléphant du PHP | 134 Messages

30 juil. 2013, 14:14

béh j'ai un message d'erreur


[Mon Jul 29 14:47:14 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: path in /var/www/clients/client3/web5/web/dev/panel/test.php on line 56, referer:
[Mon Jul 29 14:47:14 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: name in /var/www/clients/client3/web5/web/dev/panel/test.php on line 56, referer:
[Mon Jul 29 14:47:14 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: bin in /var/www/clients/client3/web5/web/dev/panel/test.php on line 56, referer:
[Mon Jul 29 14:47:14 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: options in /var/www/clients/client3/web5/web/dev/panel/test.php on line 56, referer:

ou ai-je loupé mes varibale je comprends pas ..

Bonne journée !!

Eléphant du PHP | 134 Messages

30 juil. 2013, 15:24

<?php

        $bin = $_POST['bin'];
	$path = $_POST['path'];
	$options = $_POST ['options'];
	$screen = $_POST['screen'];
	$start = $_POST['start'];

if (isset($start)) {
   $start = "cd ". $path . " && screen -AmdS " . $screen . " ./" . $bin . " " . $options;
}


?>
comme cela peut etre ? je n'ai plus de message d'erreur mais le screen ne ce créé pas ...

j'ai essayé
$start = "screen -AmdS " . $screen ;
pour voir si il ya création de screen mais rien du tout :(

Eléphant du PHP | 134 Messages

30 juil. 2013, 16:23

utiliser pour le ssh2
<?php
$connection = ssh2_connect('exemple.com', 21);
ssh2_auth_password($connection, 'user', 'motdepasse);
$auth = ssh2_auth_password($shell, $user, $password);
?>
et mes variable de cette façon ?
<?php

    $bin = $_POST['bin'];
	$path = $_POST['path'];
	$alias = $_POST['alias'];
	$options = $_POST ['options'];
	$screen = $_POST['screen'];
	$start = "screen -AmdS " . $screen;

if (isset($_POST['start'])) {
   //$start = "cd ". $path . " && screen -AmdS " . $alias . " ./" . $bin . " " . $options;
   echo ssh2_exec($start);
}


?>

sinon toujours rien ...

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

30 juil. 2013, 19:09

est ce qu'il y a un log des actions ?
as tu essayé la ligne de commande généré ($start) depuis un client ssh (même utilisateur) ?

Est ce que la connexion ssh est correcte ?


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

Eléphant du PHP | 134 Messages

31 juil. 2013, 09:08

Comment effectuer la commande dans putty directement alors qu'il y a des variable php ? ... sinon oui mon "cd game/StarMade && screen -AmdS Starwars && ./StarMade-dedicated-server-linux.sh" fonctionne

Eléphant du PHP | 134 Messages

31 juil. 2013, 09:49

et lorsque je test mon formulaire j'ai ces processus qui s'ajoute

web5 12003 0.0 0.0 12368 892 ? Ss 09:45 0:00 /usr/lib/openssh/sftp-server
web5 12056 0.0 0.0 70508 1616 ? S 09:46 0:00 sshd: domaine-quentin@notty
web5 12057 0.0 0.0 12368 888 ? Ss 09:46 0:00 /usr/lib/openssh/sftp-server


edit faut que je pense a regarder plus souvent les logs error

[Wed Jul 31 09:47:25 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Warning: ssh2_auth_password() expects parameter 1 to be resource, null given in /var/www/clients/client3/web5/web/dev/panel/test.php on line 4, referer:
[Wed Jul 31 09:47:25 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Warning: ssh2_exec() expects at least 2 parameters, 1 given in


une erreur de ma part ? mes login son bon ... je vais essayé avec les login root au cas ou ....



Edit !

bon je me suis pas mis en rout j'ai juste modifié le if (isset

if (isset($_POST['start'])) {
   //$start = "cd ". $path . " && screen -AmdS " . $alias . " ./" . $bin . " " . $options;
   echo ssh2_exec($connection ,$start);
}
Par contre maintenant j'ai cette erreur WTF quoi ..



[Wed Jul 31 10:01:17 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined index: bin in /var/www/clients/client3/web5/web/dev/panel/test.php on line 29
[Wed Jul 31 10:01:17 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined index: path in /var/www/clients/client3/web5/web/dev/panel/test.php on line 30
[Wed Jul 31 10:01:17 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined index: alias in /var/www/clients/client3/web5/web/dev/panel/test.php on line 31
[Wed Jul 31 10:01:17 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined index: options in /var/www/clients/client3/web5/web/dev/panel/test.php on line 32
[Wed Jul 31 10:01:17 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined index: screen in /var/www/clients/client3/web5/web/dev/panel/test.php on line 33
[Wed Jul 31 10:01:20 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: shell in /var/www/clients/client3/web5/web/dev/panel/test.php on line 4, referer:
[Wed Jul 31 10:01:20 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: user in /var/www/clients/client3/web5/web/dev/panel/test.php on line 4, referer:
[Wed Jul 31 10:01:20 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Notice: Undefined variable: password in /var/www/clients/client3/web5/web/dev/panel/test.php on line 4, referer:
[Wed Jul 31 10:01:20 2013] [warn] [client 93.95.60.226] mod_fcgid: stderr: PHP Warning: ssh2_auth_password() expects parameter 1 to be resource, null given in /var/www/clients/client3/web5/web/dev/panel/test.php on line 4,



et sur ma page test.php j'ai Resource id #2 qui apparaît ..


Image

Eléphant du PHP | 134 Messages

01 août 2013, 09:35

Un petit up ?

Eléphant du PHP | 134 Messages

02 août 2013, 08:47

Personne n'a de solution pour moi ?

ViPHP
ViPHP | 2577 Messages

02 août 2013, 13:29

$bin = $_POST['bin'];
$path = $_POST['path'];
$alias = $_POST['alias'];
$options = $_POST ['options'];
$screen = $_POST['screen'];
Les variables comme $_POST['bin'] ne sont pas définis. Est ce $_GET['bin'] ? Ca dépend de ton formulaire, s'il fait du get ou du post. Ou s'il n'y a pas de champ bin dans le formulaire.

Les variables $shell,... ne sont pas initialisées

Eléphant du PHP | 134 Messages

02 août 2013, 14:06

mon formulaire
<h3>Ajouter un serveur</h3>
<div class="text">Completez le formulaire suivant pour ajouter un serveur :</div>
<form method="post">
        <fieldset>
                <p><label>Alias :</label><input type="text" class="text-medium" name="alias" /></p>
                <p><label>Type :</label><select name="type">
                <option value="1">Serveur de jeu</option>
                <option value="2">Serveur vocal</option>
                </select></p>
        </fieldset>
        <fieldset>
                <p><label>Exécutable du serveur :</label><input type="text" class="text-medium" name="bin" /></p>
                <p><label>Répertoire de l'éxécutable :</label><input type="text" class="text-medium" name="path" /></p>
                <p><label>Options de lancement :</label><textarea name="options"></textarea></p>
                <p><label>Nom du screen :</label><input type="text" class="text-medium" name="screen" /></p>
        </fieldset>
                        <button type="submit" name="start" class="button"><img src="icones/tick.png"> Ajouter ce serveur</button> <button type="reset" class="button negative"><img src="icones/cross.png"> Reset des champs</button>
        
</form>

Eléphant du PHP | 134 Messages

02 août 2013, 14:13

Je comprends pas $_POST et sensé récupérer dans mon formulaire non ?

ViPHP
ViPHP | 2577 Messages

02 août 2013, 14:17

Peut être en ajoutant id en plus de name dans les attributs des balises input et submit ?
Je mets toujours les 2 sans me poser de question par habitude et je ne sais pas lequel sert pour PHP.

Ou ajoute value="" pour les input ?

Tu peux aussi mettre method="get" pour voir si les paramètres ressortent bien dans l'url.

Eléphant du PHP | 134 Messages

02 août 2013, 14:32

j'ai bien test.php?alias=&type=1&bin=&path=&options=&screen=test&go=

mon soucis viendrais maintenant du ssh ?
<?php
$connection = ssh2_connect(mondomaine.fr', 21);
ssh2_auth_password($connection, 'quentin', '132soleil');
?>