Отправка и получение нескольких команд SSH через Java Runtime и Cygwin - PullRequest
0 голосов
/ 17 марта 2010

Эй, я столкнулся со следующей проблемой при попытке построить программу в Java, которая выполняет команды на удаленном сервере Linux и возвращает вывод для обработки ...

В основном я установил Cygwin с SSH-клиентом и хочу сделать следующее:

Открытый Cygwin,

Отправить команду "user @ ip";

Обратный вывод;

Отправить команду "пароль";

Обратный вывод;

Отправить несколько других команд,

Обратный вывод;

... и т.д ...

Пока:

Process proc = Runtime.getRuntime (). Exec ("C: / Power Apps / Cygwin / Cygwin.bat");

Хорошо работает, за исключением того, что я не знаю, как сделать следующие шаги.

Любая помощь?

Ответы [ 3 ]

1 голос
/ 17 марта 2010

Вы также можете использовать Plink: Скачать здесь

Здесь есть хороший набор инструкций ссылка здесь

Вы можете использовать команду как: plink root @ myserver -pw passw /etc/backups/do-backup.sh

1 голос
/ 17 марта 2010

Использовать реализацию ssh в Java. Я использовал Ганимед пару лет назад, возможно, сейчас есть лучшие альтернативы. (?)

Используя Ganymede, вы получите входной поток для чтения и выходной поток для записи.

Вы можете создать LineInputReader во входном потоке и использовать его для чтения строк, представляющих выходные данные с удаленного сервера. Затем используйте регулярное выражение Pattern / Matcher для анализа ответов.

Создайте PrintWriter в выходном потоке и используйте println () для отправки ваших команд.

Это просто и на самом деле довольно мощно (если вы знаете регулярное выражение ... Для правильной настройки может потребоваться некоторое количество проб и ошибок ...)

1 голос
/ 17 марта 2010

Быстрый способ: не проходите через Cygwin. Передайте свою регистрационную информацию и команды в качестве аргументов в ssh.

Лучший способ: установить и использовать открытый исходный код и очень зрелый Sun Grid Engine и использовать его привязку DRMAA для Java для выполнения ваших команд. Вы также можете подумать о переходе на язык сценариев (у вас очень похожая на сценарий задача). Если у вас DRMAA есть Perl , Ruby и другие привязки .

...