我正在使用SSH2将流建立到运行修改后的 linux 的设备中。建立流后,我将阻塞设置为 true 并开始读取输出。一旦我看到“Last”这个词,我就知道系统已经准备好接受命令,所以我发送了一个。然后我读取了该命令生成的输出。
这一切都很完美,除了我必须手动关闭流。我很确定我没有收到 EOF 或换行符,这可能就是为什么,但是,这对我来说是全新的,所以我可能是错的。
输出完成后希望退出。
这是我在发送第一个命令之前要查找的内容:
Last login: Tue May 7 06:41:55 PDT 2013 from 10.150.102.115
回显输出的循环。我必须检查“最后”这个词 - 如果它不止一次出现,我会忽略它。(它导致循环重复。):
// 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);