Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 12h28   #1
Invité régulier
 
Homme Christophe Buffet
Développeur Web
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Christophe Buffet
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 9
Points : 9
Envoyer un message via Skype™ à coccoweb
Par défaut SSH et PHP ouvrir et fermer un processus

Bonjour à tous,

Petit soucis avec SSH2 en PHP

J'ai besoin de fermer ou d'ouvrir une application sur le serveur.
J'ai déjà dégoté une class (ci-joint) qui se charge de la connexion SSH et des commandes.

J'arrive à lister les processus, fermer le processus s'il est ouvert grâce au PID et à la commande


Par contre au moment d'ouvrir un nouveau processus



Et bien le processus ne s'ouvrir pas.

Voici mon script et la class qui va avec...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 
<?php
/* ************************************************************ */
/*
*   Copyright (C) 2008 Volkan KIRIK
*
*    This program is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/
/* ************************************************************ */
/* 
*   SSH - SFTP (class.shell2.php)
*   v 1.0 2007-08-13
*   v 1.1 2008-05-19 -current-
*
*   Author : Volkan KIRIK
*
*   Changes in v1.1:
*
*   * Added Disconnect function
*   * Some function names changed:
*   auth to auth_pwd
*   send to send_file
*   get to get_file
*   output to get_output
*
*   Changes in v1.0:
*
*   * First release
*
*/
/* ************************************************************ */
 
class shell2 {
var $conn;
var $error;
var $stream;
 
function __destruct(){
$this->disconnect();
}
 
function login($user, $pass, $host, $port=22) {
	if ($this->connect($host,$port)) {
		if ($this->auth_pwd($user,$pass)) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}
 
function connect($host,$port=22) {
	if ($this->conn = ssh2_connect($host, $port)) {
		return true;
	} else {
		$this->error = '[x] Can not connected to '.$host.':'.$port;
		return false;
	}
}
 
function auth_pwd($u,$p) {
	if (ssh2_auth_password($this->conn, $u, $p)) {
		return true;
	} else {
		$this->error = 'Login Failed';
		return false;
	}
}
 
function send_file($localFile,$remoteFile,$permision) {
	if (@ssh2_scp_send($this->conn, $localFile, $remoteFile, $permision)) {
		return true;
	} else {
		$this->error = 'Can not transfer file';
		return false;
	}
}
 
function get_file($remoteFile,$localFile) {
	if (ssh2_scp_recv($this->conn, $remoteFile, $localFile)) {
		return true;
	} else {
		return false;
	}
}
 
function exec_cmd($cmd) {
	$this->stream=ssh2_exec($this->conn, $cmd);
	stream_set_blocking( $this->stream, true );
}
 
function get_output() {
	$line = '';
	while ($get=fgets($this->stream)) {
		$line.=$get;
	}
	return $line;
}
 
function disconnect() {
	// if disconnect function is available call it..
	if ( function_exists('ssh2_disconnect') ) {
		ssh2_disconnect($this->conn);
	} else { // if no disconnect func is available, close conn, unset var
		@fclose($this->conn);
		unset($this->conn);
	}
	// return null always 
	return NULL;
}
}
 
?>

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
<pre>
<?php
$host = "127.0.0.1";
$user = "user";
$pass = "password";
 
$localFile="/home/test1.txt";
$remoteFile="/home/test2.txt";
 
 
 
$ssh = new shell2; // init class
 
// connect server
if ( $ssh->login($user,$pass,$host) ) {
echo '<h1>Connection </h1>';
 
//SSH Command
$ssh->exec_cmd("ls & cd webradio");
echo $ssh->get_output();
$ssh->exec_cmd("cd webradio");
echo $ssh->get_output();	
$ssh->exec_cmd("ps -x");
// Enregistrement du processus
$process = $ssh->get_output();
 
// Suppréssion des espaces 
$process=preg_replace('/\s\s+/', ' ', $process);
 
echo $process;
 
if (preg_match('#(.*)?(./sc_serv)#Ui', $process, $m)) {
	preg_match('#(.*) #Ui', $m[0], $c);
	echo "J'ai trouv&eacute; ce PID " . $c[1] . "<br />";
	$ssh->exec_cmd("kill -9 ".$c[1]);
	echo "J'ai tu&eacute; ce PID " . $c[1] . "<br />";
	$ssh->exec_cmd("ps -x");
	echo $ssh->get_output();	
} else {
 
	echo  "Ah !!! Je n'ai pas trouv&eacute;.<br /><br />";
	echo  "Je d&eacute;marre ./sc_serv<br />";
 
	$ssh->exec_cmd("./sc_serv");
	echo $ssh->get_output();
 
	$ssh->exec_cmd("ps -x");
	echo $ssh->get_output();	
}
 
} else {
echo '<h1>Erreur</h1>' . $ssh->error;
}
 
?>
</pre>
Je tiens à préciser, que personnellement je ne connais pas encore SSH, je fais juste ce script pour un ami.
Toute aide, explication est la bienvenue.

Un grand merci d'avance
coccoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 11h03   #2
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Et le

Code :
echo $ssh->get_output();
il renvoie quoi?
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 20h23   #3
Invité régulier
 
Homme Christophe Buffet
Développeur Web
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : Homme Christophe Buffet
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 9
Points : 9
Envoyer un message via Skype™ à coccoweb
Problème dans l'installation SSH
coccoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h56   #4
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Tu pourrais expliquer? Ca pourrait servir à quelqu'un....
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web