
Мне нужно иметь возможность локально запускать скрипт, который будет подключаться к различным серверам и выполнять на них команды. Каков наилучший способ сделать это?
решение1
Лично я бы использовалКапистрано. Он дружелюбен и написан на Ruby, и они уже сделали всю тяжелую работу за вас.
Из Википедии:
Capistrano — это утилита и фреймворк для параллельного выполнения команд на нескольких удаленных машинах через SSH.
решение2
вы можете запустить команду с помощью ssh hostname command
. Если у вас есть целый скрипт, который нужно выполнить, сначала используйте scp для его передачи на удаленный хост, а затем ssh для его выполнения.
scp script.sh host:script.sh
ssh host ./script.sh
решение3
решение4
Проще всего будет использовать быстрый цикл bash 'for', например, что-то вроде:
for h in host1 host2 host3
do
echo $h
ssh user@$h "ps -ef"
done
Конечно, cfengine/puppet/chef/capistrano — лучшие варианты управления конфигурацией. Если вы хотите интерактивно отправлять команды в различные оболочки, clusterm (http://sourceforge.net/projects/clusterm/) — тоже хороший выбор.