[PHP & SSH] Caractère étrange

coccoweb Messages postés 141 Date d'inscription   Statut Membre Dernière intervention   -  
coccoweb Messages postés 141 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je m'en remet à vous, car je suis dans l'impasse.

Je souhaite ouvrir des fichiers (un par un xD ) bash depuis PHP
J'y arrive, installation complète, mais il m'affiche ceci

 ~ sc_serv  
v  
D#J"¢II5%>¨äZb--QIJ'í_  
 ~ ~Ì  
sc_serv.conf  
f  
D#J"¢I5%>¨äZb--QQJ'í_  
 ~  
sc_serv.conf



Une idée ? Voici le code

<?php  
$connection = ssh2_connect('127.0.0.1', 22);  
ssh2_auth_password($connection, 'test', 'test');  

$stream = ssh2_shell($connection, 'vt102', null, 80, 24, SSH2_TERM_UNIT_CHARS);  
fwrite( $stream, 'ls');  
while($o=fgets($stream)){  
echo $o.'<br>';  
}  
?>  



A voir également:

3 réponses

coccoweb Messages postés 141 Date d'inscription   Statut Membre Dernière intervention   27
 
up
0
jeanjean_ac Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
C'est pas des données pour le rendu du shell ça ? Genre des couleurs ou d'autres meta données ?

Tu va peut-être devoir les virer toi même. Ou alors il faut passer par l'argument term_type de la fonction ssh2_shell, et indiquer un type qui soit en text/plain.
0
coccoweb Messages postés 141 Date d'inscription   Statut Membre Dernière intervention   27
 
Les terminaux que je connais, me renvois la même erreur:
j'ai essayé vanilla, vt102, xterm

PS : J'ai update ma librairie

que je joint

<?php 
class SSH {
private $conn; // Connection 
private $log=array(); // Event log
private $stream;
private $debug=false;

public function __construct($user, $pass, $host, $port=22) {
	if ($this->connect($host,$port)) {
		if (@$this->auth_pwd($user,$pass)){
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}
/*** Connection SSH ***/
public function connect($host,$port=22) {
	if ($this->conn = ssh2_connect($host, $port)) {
	$this->log[] = 'Connection succes to '.$host.':'.$port;
		return true;
	} else {
	$this->log[] = 'Connection faild to '.$host.':'.$port;
		return false;
	}
}
/*** Login SSH ***/
public function auth_pwd($user,$pass) {
	if (ssh2_auth_password($this->conn, $user, $pass)) {
	$this->log[] = 'Login succces by '.$user;
		return true;
	} else {
	$this->log[] = 'Login faild by '.$user;
		return false;
	}
}

/*** Open shell ***/
public function shell($term_type='vt102', $env=NULL, $width=80, $height=24)
{
$this->stream = ssh2_shell($this->conn, $term_type, $env, $width, $height, SSH2_TERM_UNIT_CHARS);
$this->log[] = 'Open shell with PARAM ' . $term_type . ' ' .$env . ' ' .$width . ' ' .$height;
}

/*** Run a command ***/
public function cmd($cmd)
{
if (!empty($this->stream))
{
$this->log[] = 'Run cmd : ' . $cmd;
fwrite($this->stream, $cmd . PHP_EOL);
sleep(1);
}
else
{
$this->log[] = 'Shell not run : exit';
$this->disconnect();
}


}


/*** Return log debuging ***/
function log($print=false)
{
	if ($print == false)
	{
	return $this->log;
	}	
	else
	{
	echo '<pre>';
		foreach ($this->log as $key => $value)
		{
		echo $key . ' : ' . $value . PHP_EOL;
		}
	echo '</pre>';
	}
}


/*** Print terminal return ***/
public function get()
{
$stderr_stream = ssh2_fetch_stream($this->stream, SSH2_STREAM_STDERR);
  while (!feof($stdout_stream)) {
        echo fgets($stdout_stream, 128);
    }
}


/***
Debug switch 
for call log() after disconnection
***/
public function debug()
{
$this->debug = true;
}

/*** Deconnexion ***/
public function disconnect() {
	// if disconnect function is available call it..
	if ( function_exists('ssh2_disconnect') ) {
	$this->log[] = 'Disconnect by funct ssh2_disconnect';
		ssh2_disconnect($this->conn);
	} else { // if no disconnect func is available, close conn, unset var
	$this->log[] = 'Disconnect by fclose';
		@fclose($this->conn);
		unset($this->conn);
	}
	if ($this->debug == true){$this->log(true);}
	// return null always 
	return NULL;
}

/*** Destruction de class ***/
public function __destruct(){
$this->disconnect();
}

}



$ssh = new SSH('user', 'pass', '127.0.0.1');
$ssh->debug();
$ssh->shell();
$ssh->cmd('ps');
$ssh->get();
$ssh->cmd('ls');
$ssh->get();
?>

0