2016-10-31 22 views
0

リモートサーバーでいくつかの操作を実行するために、FTPとSFTPの使用方法が交互に切り替わるプログラムがあります。JSch SFTP詳細ログ

私はApacheのCommons FTPクライアントを使用していますが、SFTPではJSchライブラリを使用しています。

Apacheコモンズは、サーバーの応答に加えて、クライアントからサーバーに発行されたすべてのコマンドを完全に冗長に出力します。

JSchと似たようなことをして、どちらの場合でもアプリケーションログの一貫性を維持したいと考えています。

私はJSchライブラリのLoggerインターフェイスを正常に実装しようとしましたが、サーバーに発行されたコマンドの詳細な表現とその応答を私に提供することはできません。

私は似たような解決策を探してみましたが、それらはすべて私がSFTPセッションではなくSSHセッションを探しているものに似た何かをすることを中心にしています。

PrintStreamを作成してチャンネルのOutputStreamとして設定しようとしましたが、これは機能しませんでした。

また、私は、チャネルの入力ストリームとOutputStreamsをキャプチャしますが、これまでのところ、私は正常に動作するように何かを得ることができていないスレッドを持つ中心に展開している、ここで発見したいくつかの提案を実装しようとしています。

私の質問は、誰かがそのようなことをすることができましたか? JSchライブラリを使用している間、下にあるFTPダイアログを印刷しますか?

答えて

1

JSchライブラリはSFTP要求と応答を記録しません。 ChannelSftpがパケットを読み取るためのストリーム自体を消費

  • :ので、ストリームの消費

    は、どちらかあなたを助けにはなりません。あなたが介入すれば、おそらくその実装を破るでしょう。

  • SFTP(FTPとは逆)はバイナリプロトコルです。したがって、ストリームを読み込んでもバイナリデータが得られます。デコードする必要があります。基本的には、SFTPプロトコルのロギング(FTPと比較して)を実装するのは非常に難しいです。基本的に、すべての単一タイプの要求/応答メッセージのすべてのフィールドを明示的に記録する必要があるからです。

また、SFTPプロトコルはFTPよりも低レベルです。 FTP STORRETRのような高級コマンドはありません。各転送には数千の異なる要求が表示されることがあります。おそらく、あなたは何をしているのでしょうか。

+0

返信いただきありがとうございます。私は実際にあなたが言及したように私はそれが機能を壊していたようなものを実装しようとしました。 これに基づいて、私は自分のすべての操作で進捗状況を記録する別の方法を見つけました。 – ArisKortex

関連する問題