In a Nutshell.

[Kotlin, FOSS, Developer's Life.]

clusterssh

Встала задача администрирования нескольких однотипных серверов: обновление, мониторинг и т.д.

Заходить на каждый и вызывать скрипт – не вариант, поэтому был произведен поиск соответствующей утилиты.

clusterssh

В простейшем случае, после установки можно подключится к нескольким серверам по ssh(поддерживаются и другие протоколы) с помощью команды:

cssh username1@188.226.179.180 username2@188.226.179.181 username3@188.226.179.182

После вызова данной команды откроется четыре окна: 3 окна xterm, и окно cssh.

Можно вводить команды как во все окна xterm одновременно – вводя в окно cssh, так и каждое окно xterm по отдельности – например если пароли от sudo разные на каждом хосте.

Чтобы не вводить каждый раз данную команду её можно обернуть в скрипт, добавить алиас или создать конфиг clusterssh.

Для создания tag’ов (tag представляет набор серверов), нужно создать файл:

~/.clusterssh/clusters

В данном файле можно создать tag либо набор tag’ов:

# My favorite servers
fav username1@188.226.179.180 username2@188.226.179.181 username3@188.226.179.182

И в последующем пользоваться данным 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 "username1@188.226.179.180 username2@188.226.179.181 username3@188.226.179.182" ./script-to-run-on-servers.sh

Итого:

для интерактивного взаимодействия можно использовать cssh

для запуска скриптов, можно использовать простейший скрипт 🙂

comments powered by Disqus