私のJavaアプリケーションは次のように動作する必要があります:
- ユーザーは GUI で bash コマンドを選択し、「送信」を押します。
- アプリケーションは、コマンドごとに個別の独立した回答を返します (たとえば、それらを別のファイルに保存できます)。
- コマンドはそれぞれ、バッチではなく対話的に実行されます (「ls\n pwd \n」などのようなものにはできません)
- 各コマンドの後、アプリケーションは待機し、結果が問題ないかどうかを確認します。その場合、次のコマンドを送信します。
- リモートホストで su を実行する必要があります。
私はExpectJを使用しました(出力ストリームを少しハックしました)。ポイント1、3、4、5を解決しました。
しかし、ポイント 2 には問題があります。私のアプリでは、個別の回答を得る必要があります。しかし、それらの長さはわかりません。コマンド プロンプトは異なる場合があります。誰かがExpectJを「ハック」する方法を知っているので、もう少し同期されますか? 私は次のように行動することを探しています:送信、完全な回答を待つ、送信、待機...基本的な同期のトリックをいくつか試しましたが、これはタイムアウトで終わり、通常は接続が失われます。
この質問は私の古い質問に関連しています: