clusterssh
2 minutes read in LinuxВстала задача администрирования нескольких однотипных серверов: обновление, мониторинг и т.д.
Заходить на каждый и вызывать скрипт – не вариант, поэтому был произведен поиск соответствующей утилиты.
В простейшем случае, после установки можно подключится к нескольким серверам по ssh(поддерживаются и другие протоколы) с помощью команды:
После вызова данной команды откроется четыре окна: 3 окна xterm, и окно cssh.
Можно вводить команды как во все окна xterm одновременно – вводя в окно cssh, так и каждое окно xterm по отдельности – например если пароли от sudo разные на каждом хосте.
Чтобы не вводить каждый раз данную команду её можно обернуть в скрипт, добавить алиас или создать конфиг clusterssh.
Для создания tag’ов (tag представляет набор серверов), нужно создать файл:
~/.clusterssh/clusters
В данном файле можно создать tag либо набор tag’ов:
# My favorite servers
fav [email protected] [email protected] [email protected]
И в последующем пользоваться данным tag:
cssh fav
Если у вас есть несколько tag’ов и вы хотите подключиться одновременно ко всем, то просто перечислите их:
cssh tag1 tag2 tag3
Второй вариант – запуск сессий ssh в цикле, в дочернем процессе:
#!/bin/bash
servers=$1
commands=$2
for server in $servers; do
echo "ssh $server $commands"
gnome-terminal -e "ssh $server $commands" &
done
Назовем данный скрипт clustershell.sh
Теперь используем его:
./clustershell.sh "[email protected] [email protected] [email protected]" ./script-to-run-on-servers.sh
Итого:
- для интерактивного взаимодействия можно использовать cssh
- для запуска скриптов, можно использовать простейший скрипт 🙂