我有一个在 PHP 中工作的 SSH2_Shell 会话。我的问题是我需要一个命令才能完全完成,然后再转到下一个命令。到目前为止,这是我的代码:
$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,它似乎冻结了我的浏览器。
总的来说,我需要一种方法来检测命令何时完成并进入下一个命令。
提前致谢!