У меня есть сеанс SSH2_Shell, работающий на PHP. моя проблема в том, что мне нужна команда, чтобы полностью закончить, прежде чем перейти к следующей команде. Вот мой код:
$command_capture = "cd /mnt/NADS/scripts/";
$command_capture2 = "./tcpdump.sh $capture_name $sleep";
if (!($connection = ssh2_connect("172.20.1.18", 22))) {
echo "fail: unable to establish connection";
}
if (!ssh2_auth_password($connection, "root", "Hideandseek")) {
echo "fail: unable to authenticate";
}
$stream = ssh2_shell($connection);
fwrite($stream, $command_capture. PHP_EOL);
sleep(1);
fwrite($stream, $command_capture2 . PHP_EOL);
sleep(5);
$data="";
while($buf = stream_get_contents($stream)){
$data.=$buf;
}
echo $data;
fclose($stream);
Сценарий tcpdump.sh выполняет команду lftp, но ему не дается достаточно времени для завершения. Я не могу использовать сон, так как это может занять больше времени, чем указанное время, и я не хочу заставлять пользователя ждать, если ему нужно всего несколько секунд. Мне не повезло с осуществлением stream_set_blocking, так как когда я это делаю, кажется, что мой браузер зависает.
В общем, мне нужен способ определить, когда команда завершилась, и перейти к следующей команде.
Заранее спасибо!