2016-10-31 6 views
0

У меня есть программа, которая чередуется между использованием FTP и SFTP для выполнения некоторых операций на удаленном сервере.JSch SFTP подробное ведение журнала

Для части FTP я использую клиент FTP Apache Commons, тогда как для SFTP я использую библиотеку JSch.

Apache предлагает полную и полную распечатку всех команд, выданных клиентом серверу, в дополнение к ответу сервера.

Я хотел бы сделать что-то подобное с JSch, чтобы я был последовательным в том, как мое приложение регистрируется в обоих случаях.

Я попытался реализовать интерфейс Logger библиотеки JSch успешно, но оказалось, что он не может предоставить мне подробное представление команд, выданных серверу, а также его ответ.

Я пробовал искать похожие решения, но все они вращаются вокруг чего-то похожего на то, что я ищу для сеанса SSH, а не для сеанса SFTP.

Я попытался создать PrintStream и установить его как OutputStream канала, но это не сработало.

Я также попытался реализовать некоторые предложения, которые я нашел здесь, которые вращаются вокруг потока, который будет захватывать InputStream и OutputStreams канала, но до сих пор я не смог заставить что-то работать правильно.

Вопрос в том, кто-нибудь мог сделать что-то подобное - например. распечатать базовый диалог FTP - при использовании библиотеки JSch?

ответ

1

Библиотека JSch не регистрирует запросы SFTP и ответы.

Потребляя потоки не поможет либо, потому что:

  • ChannelSftp потребляет сам поток для чтения пакетов. Если вы вмешаетесь, вы, вероятно, нарушите его реализацию.
  • SFTP (в отличие от FTP) - это двоичный протокол. Поэтому, даже если вам удастся прочитать поток, вы получите двоичные данные, которые вам нужно будет расшифровать. По сути, довольно сложно реализовать протоколирование SFTP-протокола (по сравнению с FTP), поскольку вам в основном нужно явно регистрировать каждое отдельное поле каждого сообщения запроса/ответа.

Также обратите внимание, что протокол SFTP более низкоуровневый, чем FTP. Нет «хороших» команд высокого уровня, таких как FTP STOR или RETR. Вы можете видеть тысячи различных запросов для каждой передачи. Наверное, нет, что тебе нужно.

+0

Спасибо за ответ. Я на самом деле пытался реализовать что-то вроде того, что я нарушал его функциональность, как вы упоминаете. Основываясь на этом, я нашел другой способ зарегистрировать мой прогресс в каждой операции, которую я делаю. – ArisKortex