IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

SSH et PHP ouvrir et fermer un processus


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Et le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $ssh->get_output();
    il renvoie quoi?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Par défaut
    Problème dans l'installation SSH

  4. #4
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Tu pourrais expliquer? Ca pourrait servir à quelqu'un....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/10/2006, 10h40
  2. Ouvrir ou fermer une fenetre
    Par flav66 dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/10/2006, 15h52
  3. Ouvrir et fermer une image MetaFile
    Par mofetil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/08/2006, 22h38
  4. Réponses: 6
    Dernier message: 28/04/2006, 09h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo