Информация об изменениях

Сообщение Re: Удаленно запустить shell-script через java-code от 14.03.2016 8:19

Изменено 14.03.2016 8:20 vsb

Рекомендую следующий вариант.

На сервере разрешить вход по ключу пользователю user_name. Это позволит обойтись без промежуточного пользователя и вызова sudo.

В Java просто запустить ssh как отдельный процесс. Что-то вроде "ssh user_name@server /path/to/script.sh". Вот и всё. Это для юникса, что там в путти, я не знаю, скорее всего что-то похожее. Вообще лучше такие задачи делать из-под юникса, венда для этого только препоны будет чинить.

Если разрешить вход по ключу пользователю user_name нельзя (долбанутые админы, например), то надо написать на сервере отдельный скрипт, который будет запускать sudo и всё остальное. Либо просто через sudo -u user_name /path/to/script.sh, если пароль sudo не просит, либо с помощью программы expect, если надо вводить пароль, реально надо запускать подпроцесс шелла, выполнять там какие-то команды. Но это уже самый большой геморрой и изврат.

Java тут в целом не при чём. От неё надо просто запустить ssh с нужными параметрами, как это делать, я думаю вы знаете или разберётесь. Всё остальное надо настраивать скриптами на удалённом сервере.
Re: Удаленно запустить shell-script через java-code
Рекомендую следующий вариант.

На сервере разрешить вход по ключу пользователю user_name. Это позволит обойтись без промежуточного пользователя и вызова sudo, а также без ввода пароля в ssh.

В Java просто запустить ssh как отдельный процесс. Что-то вроде "ssh user_name@server /path/to/script.sh". Вот и всё. Это для юникса, что там в путти, я не знаю, скорее всего что-то похожее. Вообще лучше такие задачи делать из-под юникса, венда для этого только препоны будет чинить.

Если разрешить вход по ключу пользователю user_name нельзя (долбанутые админы, например), то надо написать на сервере отдельный скрипт, который будет запускать sudo и всё остальное. Либо просто через sudo -u user_name /path/to/script.sh, если пароль sudo не просит, либо с помощью программы expect, если надо вводить пароль, реально надо запускать подпроцесс шелла, выполнять там какие-то команды. Но это уже самый большой геморрой и изврат.

Java тут в целом не при чём. От неё надо просто запустить ssh с нужными параметрами, как это делать, я думаю вы знаете или разберётесь. Всё остальное надо настраивать скриптами на удалённом сервере.