Klas が既に述べたように、この場合zDonez
は、元のコマンドが実行された後にリモート シェルによって出力される単純な文字列です。
command += "; echo \"" + TERMINATOR + "\" \n";
このようにして、getServerResponse()
メソッドはコマンドが終了したことを認識し、正しい文字列を返すことができます。
これはチャネル タイプの最適な使用方法ではないと思います。shell
チャネル タイプはインタラクティブな使用にのみ使用する必要があります。つまり、ユーザーが次のコマンドをいつ入力するかを決定するためにそこにいる場合です。(ほとんどのシェルには、この理由でプロンプトがあります。)
より良い方法は、コマンド (または一連のコマンド) ごとに個別のチャネルを使用することですが、各 exec チャネルには独自のシェルがあるため、状態を変更するコマンドや同様のコマンドをexec
使用することはできません。cd
SFTP の場合、リモート コマンドを実行する必要はまったくありません。またはチャネルの代わりにChannelSftpを使用します。デフォルトの JSch ディストリビューションには、このクラスでサポートされている操作の使用方法を示す例があります。exec
shell
Sftp
より一般的なドキュメントは、wiki の JSch マニュアルにあります。
(免責事項: この非公式の JSch Javadoc (公式の情報源に基づく) と、Wiki マニュアルのほとんどのテキストは私が作成しました)。