Мне нужно протестировать распределенную систему с несколькими удаленными серверами, поэтому я использую pssh на главном сервере для управления другими. Здесь нужно запустить несколько серверов с разными командами, например

На сервере 201 нужно запустить

java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002

На сервере 202 нужно запустить

java -jar test.jar 9001 **.**.**.** 9003
java -jar test.jar 9001 **.**.**.** 9004

На сервере 203 нужно запустить

java -jar test.jar 9001 **.**.**.** 9005
java -jar test.jar 9001 **.**.**.** 9006

...

Вся информация о сервере уже сохраняется в hosts.txt в формате username @ server . Так как же использовать pssh на главном сервере для запуска команд?

1 ответ1

1

pssh используется для запуска одной и той же команды на разных серверах, ваш пример показывает, что вы хотите запускать разные команды на разных серверах (начало команд одинаково, но последний номер отличается).

Что вы можете сделать, это поместить эти команды в файл сценария на каждом из соответствующих серверов, убедившись, что файл сценария называется одинаковым на каждом сервере, а затем использовать pssh -i -h hosts.txt script.sh .

Как пример, на сервере 201 положить в script.sh

#!/bin/sh
java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002

и на сервере 202 положить в script.sh

#!/bin/sh
java -jar test.jar 9001 **.**.**.** 9003
java -jar test.jar 9001 **.**.**.** 9004

и т.п.

Затем поместите script.sh в $ PATH пользователя, который будет запускать команду или указать полный путь к сценарию, и не забудьте сделать сценарий исполняемым на серверах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .