Сообщение, которое вы видите, просто печатается на выходе shell .
Это не подходит для автоматического чтения и выполнения команд.
В общем, чтобы автоматизировать выполнение команды, вы правильно планируете использовать SSH-канал "exec" (ChannelExec
в JSch). Но этот канал не даст вам сообщение.
Вы должны использовать канал "shell" (ChannelShell
в JSch). Но этот канал предназначен для реализации сеанса интерактивной оболочки. Не автоматизировать выполнение команд и не анализировать вывод команд. В частности, в контексте вашего вопроса, нет реального способа узнать конец «приветственного сообщения». Вы должны будете читать вывод построчно, пока не получите подсказку ("deb@ubuntu:~$"
).
Или, если ваш сценарий использования позволяет, вы можете использовать ChannelShell
, чтобы получить сообщение, а затем использовать ChannelExec
для выполнения команд.
Вам лучше поговорить с администратором сервера, чтобы сделать необходимую информацию доступной с помощью другого API (например, с помощью SSH2_MSG_USERAUTH_BANNER
или даже другим способом).
См. Мой ответ на SSH MOTD для пользователя , чтобы понять, как сервер может предоставить «приветственное сообщение». Если бы сервер использовал SSH2_MSG_USERAUTH_BANNER
, вы могли бы использовать UserInfo.showMessage
для захвата сообщения. См. Также Как прочитать баннер пары ключ-подпись SSH (для генерации пароля SSH) после подключения к хосту в Java?