2014-12-17 2 views
-1

Я использую ssh2 для выполнения запроса mysql на удаленном сервере. Вот мои строки:«Ressource id # 5» возвращается при использовании mysql в ssh2_exec

$connection = ssh2_connect("ip_address", 22); 
if (ssh2_auth_pubkey_file($connection, "user", ".ssh/id_rsa.pub", ".ssh/id_rsa")) 
{ 
echo("Ok"); 
} 
else 
{ 
die("KO"); 
} 
$stream = ssh2_exec($connection, "mysql -u root --password=password -D db -e 'SELECT * FROM table'"); 
echo $stream; 

Когда я запустить мою команду, у меня есть сообщение «OK» и переменные $ потока пишет: «Ressource ID # 5» я не знаю, почему он не делает Работа. Я проверил команду в bash с правильной командой ssh:

ssh [email protected]_address "command" 

И это сработало. Я жду вашей помощи, Спасибо, Cordialement,

+0

RTFM: [ssh_exec()] (http://php.net/ssh_exec) возвращает поток. вам тогда нужно ПРОЧИТАТЬ из этого потока ([stream_get_contents()] (http://php.net/stream_get_contents)), чтобы узнать, какой был результат вашей удаленной команды. –

ответ

2

Я думаю, что вы могли бы иметь больше удачи с phpseclib, a pure PHP SSH implementation. например.

<?php 
include('Net/SSH2.php'); 
include('Crypt/RSA.php'); 

$ssh = new Net_SSH2("ip_address", 22); 
$key = new Crypt_RSA(); 
$key->loadKey(file_get_contents(".ssh/id_rsa")); 
if ($ssh->login('user', $key)) { 
    echo "Ok"; 
} else { 
    die("KO"); 
} 
echo $ssh->exec("mysql -u root --password=password -D db -e 'SELECT * FROM table'");