как выполнить сценарий оболочки и вернуть его результат с Windows station с помощью Java?

#java #shell #windows-7 #flex3

#java #оболочка #windows-7 #flex3

Вопрос:

я пытаюсь выполнить сценарий оболочки из приложения j2ee (созданного с помощью flash Builder 3, spring, apache cxf) и получить результат его выполнения в моем гибком интерфейсе.

проблема в том, что мое приложение находится на станции Windows 7, и я не знаю, как я могу выполнить сценарий на удаленном сервере unix и вернуть результат.

я знаю, что ssh api могут помочь, но я понятия не имею, как вернуть результат.

любая помощь будет приветствоваться.

спасибо

Ответ №1:

Если на вашем компьютере с Windows установлен ssh, вы должны иметь возможность выполнить команду типа

 ssh user@remote_host ipconfig
  

Это приведет к выполнению ipconfig на remote_host от имени пользователя «user». Вам нужно будет провести небольшое исследование ssh, чтобы вы могли сделать так, чтобы вы могли входить в систему без использования пароля, но Google поможет с этим.

В качестве альтернативы вы могли бы заглянуть в java-реализацию ssh — например, jssh, хотя, признаюсь, у меня нет опыта использования этого пакета.

Комментарии:

1. спасибо за ваш ответ. но могу ли я узнать, все, что мне нужно сделать, это поместить этот cmd в ‘ Process p = Runtime.getRuntime().exec(cmd);’? у меня также не установлен ssh на моем компьютере с Windows, нужно ли мне устанавливать определенную версию в соответствии с сервером unix?

2. Я думаю, что любой ssh-клиент, скорее всего, будет в порядке, если только на вашем unix-сервере не установлена очень старая версия ОС. На вашем месте я думаю, что я бы исследовал использование чистой библиотеки Java SSH, хотя, поскольку они могут устранить некоторые из ваших проблем с настройкой — и, вероятно, это также облегчит ваше развертывание в будущем.

3. Можете ли вы развернуть код на рассматриваемом сервере Unix? Если да, вы всегда можете поместить приведенный выше код на сервер unix (например, в сервлет), а затем связаться с этим сервлетом через HTTP.

Ответ №2:

Для выполнения программы из Windows в unix вам действительно нужен ssh или telnet.

SSH более безопасен. Вы можете сделать это без запуска внешнего процесса. Используйте одну из доступных библиотек SSH на чистом java (например javassh.org ).

Смотрите примеры. Если вы используете эту библиотеку, ваша задача тривиальна. Просто вызовите соответствующий API.

Ответ №3:

Пожалуй, единственный разумный и достаточно безопасный ответ, который я смог придумать, — это настроить ssh на обеих машинах. * в nix-окнах обычно по умолчанию установлен ssh-сервер. Эмуляция терминала Putty для Windows поставляется с удобной утилитой командной строки ssh-клиента plink, которая может безопасно выполнять команды оболочки на удаленном компьютере unix.