JSCH Java-апплет - PullRequest
       11

JSCH Java-апплет

3 голосов
/ 17 февраля 2012

Я встроил Java-апплет JSCH SSH в веб-страницу и мне нужно знать, можно ли запустить скрипт (любого языка, например PHP) для автоматизации входа в систему и выполнения команд. Я слышал о Wait4j и Java-роботе, но не вижу способа реализовать его. Имейте в виду, я не очень хорошо разбираюсь в Java, поэтому не знаю всего об этом. Любая помощь приветствуется.

1 Ответ

3 голосов
/ 18 февраля 2012

JSch - это клиентская библиотека SSH, и сама по себе только позволяет программно управлять подключениями к другому серверу. Взаимодействие с пользователем должно строиться вокруг него пользователями библиотеки.

Апплет JCTerm , представленный на веб-сайте, также содержит эмулятор терминала в виде графического интерфейса Java. Если вы хотите только автоматически выполнить какую-либо команду (и, возможно, отобразить ее вывод на веб-странице), вы можете делать все на стороне сервера и не нуждаться в апплете с эмулятором терминала. (Вам может понадобиться либо какой-нибудь мост PHP-Java на стороне сервера, либо какой-либо веб-сервер с поддержкой Java с сервлетом или аналогичный.)

(Если веб-сервер будет той же машиной, что и сервер, на котором вы будете запускать команду, вам даже не понадобится SSH-соединение, но он может выполнить все напрямую.)

Если сервер ничего не может сделать (например, «статический сервер»), апплет - это путь, да. Вы можете изменить JCTerm или создать новый апплет с нуля (используя код подключения JCTerm в качестве примера того, как подключиться к серверу).

Если вам не нужно бояться каких-либо злонамеренных пользователей в вашей локальной сети (т. Е. Между веб-сервером и пользователем, SSH-сервер не имеет значения), вы можете встроить пароль (или предпочтительно закрытый ключ для аутентификации с открытым ключом). ) в файл jar апплета и передайте его в библиотеку для подключения. (Вы также должны включить открытый ключ сервера для упрощения проверки.)

Предоставьте команду (ы) для ChannelExec (вместо ChannelShell), это облегчает предоставление ввода (при необходимости) и захват вывода. Перенесите вывод в текстовую область или просто используйте зеленую / красную метку, указывающую, была ли команда успешно выполнена.

(Я мог бы взглянуть на это в ближайшие дни и попытаться это сделать. Однако без обещаний.)

...