1

apache-commons と JSCH libs を使用して一般的な FTP または SFTP を作成するための内部ライブラリを作成しました

Windows から UNIX にテキスト ファイルをアップロードするときに、FTP を使用している場合は ASCII モードに切り替えることができますが、これは SFTP プロトコルでは不可能なので、CRLF と CR Windows/Unix エンドを処理するカスタム入力ストリーム リーダーを作成します。ラインの問題。

ここで、SFTP ホストが Windows であるか Unix であるかを知る方法があるかどうかが懸念されます。その場合、カスタム Windows2UnixInputStreamReader で FileInputStreamReader をカプセル化します。

ホストのSOを知る方法を知っていますか?解決策が FTP/SFTP 接続を介している場合

4

2 に答える 2

3

タスクを完了する方法はいくつかありますが、ライブラリがそれらをサポートしているかどうかはわかりません。

  • SFTP プロトコルには SSH_FXF_TEXT_MODE ファイル オープン フラグが含まれており、テキスト モードでファイルを開くことができ、EOL シーケンスを CRLF に変換できます (プロトコルのバージョン 6 以降で利用可能、AFAIR)。
  • 'newline' SFTP 拡張子 - サーバーの正確な EOL 規則を伝えます
  • SSH サーバー ソフトウェア/バージョン文字列を解析しています。
于 2013-06-12T11:44:15.947 に答える
0

FTP プロトコルはプラットフォームに依存しないため、100% の解決策はありません。ただし、ヒューリスティックを使用できます。FTP ではディレクトリのリストを取得できるため、既知のルートの下にあるファイルのリストを取得して、結果に基づいて結論を出すことができます。

ただし、この方法は 100% ではありません。FTP サーバーのルートが必ずしもファイル システムのルートであるとは限らないため、このルートの下にあるよく知られたファイルやディレクトリを見つけることができない可能性があります。

ターゲット ホストのオペレーティング システムを検出するためのおそらくより良い方法は、 nmapなどのツールを使用することです。

于 2013-06-12T11:54:41.490 に答える