[PHP & SSH] ouvrir et fermer un processus
3 messages
• Page 1 sur 1
- devphp
- Nouveau WRInaute

- Messages: 6
- Inscription: 8 Aoû 2011
[PHP & SSH] 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 si 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...
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
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 si il est ouvert grâce au PID et à la commande
- Code: Tout sélectionner
kill -9 N° PID
Par contre au moment d'ouvrir un nouveau processus
- Code: Tout sélectionner
./sc_serv
Et bien le processus ne s'ouvrir pas.
Voici mon script et la class qui va avec...
- Code: Tout sélectionner
<?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: Tout sélectionner
<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é ce PID " . $c[1] . "<br />";
$ssh->exec_cmd("kill -9 ".$c[1]);
echo "J'ai tué ce PID " . $c[1] . "<br />";
$ssh->exec_cmd("ps -x");
echo $ssh->get_output();
} else {
echo "Ah !!! Je n'ai pas trouvé.<br /><br />";
echo "Je dé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
-

Axiso - WRInaute impliqué

- Messages: 594
- Inscription: 8 Avr 2004
Re: [PHP & SSH] ouvrir et fermer un processus
Es-tu bien sûr que tu tentes d'exécuter "./sc_serv" dans le contexte correct, c'est à dire celui de son répertoire ? Tente l'affichage d'un "pwd" avant de lancer "./sc_serv".
Et est-ce que ton processus ne se lancerait pas pour s'interrompre aussitôt ? Ce qui ne te laisserait pas le temps de le visualiser en cours de fonctionnement.
Et est-ce que ton processus ne se lancerait pas pour s'interrompre aussitôt ? Ce qui ne te laisserait pas le temps de le visualiser en cours de fonctionnement.
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Configurer le PHP.ini via ssh
- Ouvrir php avec KOmpozer
- Ouvrir une fenêtre popup en PHP
- Question PHP ouvrir un fichier extension inconnue
- ouvrir 2 fenetres messenger pour ouvrir 2 comptes différents
- Ouvrir des liens un a un en PHP (ou par favoris Firefox)
- [PHP] Ouvrir ma zone membre dans une nouvelle fenêtre
- processus d'authentification de google
- Taille de Processus Apache énorme !
- Processus linux MySql à 90% du CPU
Consultez la description détaillée des produits ou services de Google suivants : Google Deskbar
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
