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

Bibliothèques et frameworks PHP Discussion :

[SSH2] ssh2_exec, problème d'exécution de la commande


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut [SSH2] ssh2_exec, problème d'exécution de la commande
    Bonjour voila j'utilise actuellement un serveur dedier OVH pour un serveur de jeux.

    Je vien d'installer apache 2 php5 libssh2 ...

    Donc mon soucis et la commade ssh2_exec.

    Voici le script en question

    ssh2_exec($connection, 'screen -d -R css -X stuff "changelevel de_dust"');

    Malheuresement quand je tappe cette commande j'ai bien dans la console de mon serveur changelevel de_dust mais comment faire pour quel soit executer. il faudrait envoyé la commande enter pour pouvoir lancer la commande mais je ne trouve pas comment.

    De plus autre question :

    Donc en gros j'ai mon script qui m'envoie le nom de la map à mettre grace à une variable transmise dans la barre d'adresse la variable se nom map donc $_GET['map'];
    Je voudrais creer une variable qui contien le nom de la map avec le script donc voici ce que je fais :

    $map = $_GET['map'];
    $changelevel = 'screen -d -R css -X stuff "changelevel $map"'
    Malheuresement sa n'insere pas la variable juste $map comment faire pour inserer la variable map ?
    Merci pour votre aide
    Cordialement Atomics

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Personnellement, j'utilise une classe trouver sur le net, pour mes connections ssh :
    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
     
    class Ssh_ssh2 {
     
    	private $host = 'Serveur';
    	private $user = 'NomUser';
    	private $port = '22';
    	private $password = 'Password';
    	private $con = null;
    	private $shell_type = 'xterm';
    	private $shell = null;
    	private $log = '';
     
    	function __construct($host='', $port=''  ) {
     
    		if( $host!='' ) $this->host  = $host;
    		if( $port!='' ) $this->port  = $port;
     
    		$this->con  = ssh2_connect($this->host, $this->port);
     
    	}
     
    	function authPassword( $user = '', $password = '' ) {
     
    		if( $user!='' ) $this->user  = $user;
    		if( $password!='' ) $this->password  = $password;
     
    		if( !ssh2_auth_password( $this->con, $this->user, $this->password ) ) {
    			$this->log .= "Authorization failed !";
    		}
     
    	}
     
    	function openShell( $shell_type = '' ) {
     
    		if ( $shell_type != '' ) $this->shell_type = $shell_type;
    		$this->shell = ssh2_shell( $this->con,  $this->shell_type );
    		if( !$this->shell ) $this->log .= " Shell connection failed !";
     
    	}
     
    	function writeShell( $command = '' ) {
     
    		fwrite($this->shell, $command."\n");
     
    	}
     
    	function readFlux()
    	{
     
    	}
     
    	function cmdExec( ) {
     
    		$argc = func_num_args();
    		$argv = func_get_args();
     
    		$cmd = '';
    		for( $i=0; $i<$argc ; $i++) {
    			if( $i != ($argc-1) ) {
    				$cmd .= $argv[$i]." && ";
    			}else{
    				$cmd .= $argv[$i];
    			}
    		}
    		//echo $cmd;
     
    		$stream = ssh2_exec( $this->con, $cmd );
    		stream_set_blocking( $stream, true );
    		//return fread( $stream,250000);
    		return $output = stream_get_contents($stream);
     
    	}
     
    	function getLog() {
     
    		return $this->log;
     
    	}
     
    }
    A partir de cette class, je ferais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $map = $_GET['map'];
    $changelevel = 'screen -d -R css -X stuff "changelevel"'.$map
     
     
    $ssh = new Ssh_ssh2('','');
    			$ssh->authPassword();
    			$stdout = $ssh->cmdExec($changelevel);

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Donc j'ai essayer ta technique mais malheuresement je me retrouve au même niveau car la commande s'affiche bien dans le screen mais elle n'est pas exécuté il faut encore l'appuie sur la touche entrée. j'ai essayer apres avec /n sa ne marche pas non plus et aussi avec un bash comme ça :

    screen -d -R css -X stuff "changelevel de_dust2
    "

    Et toujours le même problème

    Cordialement Atomics

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    D'accord et comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $changelevel = '`screen -d -R css -X stuff "changelevel"'.$map.'`'

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Non plus sa ne marche pas la sa affiche seulement changelevel dans la console.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    nouvel essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $changelevel = '`./screen -d -R css -X stuff "changelevel"'.$map.'`'

Discussions similaires

  1. [SSH2] problème d'exécution avec la fonction ssh2_exec
    Par boriskov dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/08/2008, 18h18
  2. Problème d'exécution de commande dos
    Par Milowen dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2006, 15h13
  3. problème d'exécution sous l'invite de commande
    Par gnocki dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/11/2006, 12h43
  4. [VB]Problème d'exécution d'une commande dos...
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 17/02/2006, 13h28
  5. Réponses: 5
    Dernier message: 19/04/2005, 09h50

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