SSH2を使用して、変更された Linux を実行しているデバイスへのストリームを確立しています。ストリームが確立されたら、blocking を true に設定し、出力の読み取りを開始します。「Last」という単語が表示されたら、システムがコマンドを受け入れる準備ができていることがわかったので、コマンドを送信します。次に、そのコマンドによって生成された出力を読み取ります。
これはすべて完全に機能しますが、ストリームを手動で閉じる必要があります。私はEOFまたは改行を返していないことを確信しています.これがおそらく理由ですが、これは私にとってすべて新しいことなので、間違っている可能性があります.
出力が完了したら終了しようとしています。
最初のコマンドを送信する前に探しているものは次のとおりです。
Last login: Tue May 7 06:41:55 PDT 2013 from 10.150.102.115
出力をエコーするループ。「Last」という単語を確認する必要があります。複数回表示されている場合は無視します。(ループが繰り返されていました。):
// Prevents premature termination
$lastCount = 1;
stream_set_blocking($stdio, true);
while($line = fgets($stdio)) {
$count++;
flush();
if (strstr($line, 'Last') && $lastCount == 1) {
fwrite($stdio,$command . PHP_EOL);
$lastCount--;
}
echo $line;
}
fclose($stdio);