Bonjour à tous,

Je voudrais faire une commande SQL (sur oracle) sur un serveur distant par le biais du protocole SSH de PHP. Le ssh2 de php marche correctement.

J'arrive à me connecter à ma base oracle mais je ne sais pas comment passer les commandes SQL par la suite.

Je m'explique. Je veux juste récupérer le résultat de la commande "select status from v$instance sur une base oracle." il me dit que la syntaxe de connection oracle n'est pas bonne puisqu'il ne considère pas le \n comme une validation de la commade.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$commande_ssh2 = 'sqlplus system/manager@demoweb \n
select status from v$instance; \n
exit \n';
 
echo 'Lancement de la commande : '.$commande_ssh2;
 
$stream = ssh2_exec($connection, $commande_ssh2);
 
stream_set_blocking( $stream, true );
 
$data = fread($stream,4096);
 
fclose($stream);
renvoie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Lancement de la commande : sqlplus system/manager@demoweb \n select status from v$instance; \n exit \n
 
Commande
 
Syntaxe : SQLPLUS [] [connexion] [] ]
où ::= - | -? | [ [-M ] [-R ] [-S] ]
::= [/][@] | / | /NOLOG }
::= @[.] [ ...]
"-" affiche la syntaxe
"-?" affiche le numéro de version de SQL*Plus
"-M " utilise les options de balisage HTML
"-R " utilise le mode restreint
"-S" utilise le mode silencieux
Merci d'avance


[EDIT]

J'ai légèrement changé le programme pour qu'il prenne en compte les \n :

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
 
$commande_ssh1 = "sqlplus system/manager@demoweb \n
select status from v$instance; \n
exit \n
";
 
echo 'Lancement de la commande : '.$commande_ssh.'<br/>';
 
$stream = ssh2_exec($connection, $commande_ssh);
 
stream_set_blocking( $stream, true );
 
$data = "";
while( $buf = fread($stream , 1024) )
{
	$data .= '<hr />'.$buf;
}
Le problème est que je ne récupère plus la main. La page se charge indéfiniment.