[RESOLU] PHP ssh2_exec Streams

Petit nouveau ! | 2 Messages

24 janv. 2019, 21:08

Salut à tous,

Je travaille sur un projet qui se connecte via SSH pour faire une commande donnée, puis obtenir le output de cette commande. Cela doit être 3 fois pour obtenir 3 informations différentes que je reçois en SNMP.

J'ai testé mes commandes, et manuellement ils fonctionnent tous.

Tout fonctionne pour la première boucle, je peux extraire les données de la commande, malheureusement pour les 2 autres de la boucle, elles sont vides, c'est comme si aucune valeur n'avait été attachée à la variable.

Mais j'ai testé cela lorsque je change $ ServerCommandRadioSignal en $ ServerCommandRadioModel, j'obtiens les mêmes données que la première boucle lorsque $i == 0 ..

Je n'ai plus d'options, j'ai essayé de supprimer les flux ou de fermer les variables SSH2_Exec, mais aucun ne fonctionne. Quelqu'un a-t-il une idée?


for($i = 0; $i < 3; $i++) {
//echo $i;
if($i == 0) {
$stream0 = ssh2_exec($sshconn, $ServerCommandRadioModel);
stream_set_blocking($stream0, true);
$stream0_out = ssh2_fetch_stream($stream0, SSH2_STREAM_STDIO);
$UserRadioModel = stream_get_contents($stream0_out);
echo $UserRadioModel;
fclose($stream0);
fclose($stream0_out);
}

if($i == 1) {
$stream1 = ssh2_exec($sshconn, $ServerCommandRadioSignal);
stream_set_blocking($stream1, true);
$stream1_out = ssh2_fetch_stream($stream1, SSH2_STREAM_STDIO);
$UserRadioSignal = stream_get_contents($stream1_out);
echo $UserRadioSignal;
fclose($stream1);
fclose($stream1_out);
}

if($i == 2) {
$stream2 = ssh2_exec($sshconn, $ServerCommandRadioSSID);
stream_set_blocking($stream2, true);
$stream2_out = ssh2_fetch_stream($stream2, SSH2_STREAM_STDIO);
$UserRadioSSID = stream_get_contents($stream2_out);
echo $UserRadioSSID;
fclose($stream2);
fclose($stream2_out);
}

}



Quand je fais rouler le script voici les résultats de echo.

1st Loop = "somedata1"
2nd Loop = nothing
3rd Loop = nothing

Petit nouveau ! | 2 Messages

25 janv. 2019, 17:30

Solution trouvée:


$ServerCommands = [$ServerCommandRadioModel, $ServerCommandRadioSignal, $ServerCommandRadioSSID];
$UserRadioOutput = [];
$i = 0;

foreach($ServerCommands as $ServerUniqueCommand) {
$stream = ssh2_exec($sshconn, $ServerUniqueCommand);
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);

if($i == 0) {
$UserRadioOutput[0] = stream_get_contents($stream_out);
echo $UserRadioOutput[0];
} elseif($i == 1) {
$UserRadioOutput[1] = stream_get_contents($stream_out);
echo $UserRadioOutput[1];
} elseif($i == 2) {
$UserRadioOutput[2] = stream_get_contents($stream_out);
echo $UserRadioOutput[2];
}
//echo $i;
$i++;
}


ssh2_exec($sshconn, 'exit');
unset($sshconn);