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 を実装するのはうまくいきませんでした。そうすると、ブラウザがフリーズするようです。
全体として、コマンドが終了したことを検出して次のコマンドに移る方法が必要です。
前もって感謝します!