Как уже сказал Клас, в этом случае zDonez
- это просто строка, которая будет напечатана удаленной оболочкой после выполнения исходной команды.
command += "; echo \"" + TERMINATOR + "\" \n";
Таким образом, метод getServerResponse()
может знать, когда команда завершена, и возвращать правильную строку.
Я бы сказал, что это не лучшее использование типа канала shell
, который должен использоваться только для интерактивного использования, т. Е. Когда пользователь решает, когда вводить следующую команду. (У большинства оболочек есть подсказка по этой причине.)
Лучшим способом было бы использовать отдельный канал exec
для каждой команды (или серии команд), хотя тогда вы не можете использовать cd
или аналогичные команды, изменяющие состояние, поскольку каждый канал exec будет иметь свой собственная оболочка.
Для SFTP вам вообще не нужно выполнять удаленные команды - используйте ChannelSftp вместо exec
или shell
канала. В дистрибутиве JSch по умолчанию приведен пример Sftp
, в котором показано, как использовать любые операции, поддерживаемые этим классом.
Более общая документация содержится в Руководстве по JSch в вики .
(Отказ от ответственности: я написал это неофициальный JSch Javadoc (на основе официальных источников), а также большую часть текста в Руководстве по Вики).