Если вы являетесь администратором достаточно большого количества unix-машин, то наверняка вам приходилось сталкиваться с необходимостью выполнить пару команд на всех ваших машинах. Для упрощения этого есть несколько методов.
Первый — самый простой и примитивный. Он использует только bash, и не требует установки дополнительного софта.
Предположим, что у нас есть машины gmos-1, gmos-2, gmos-3 и т. д. и мы хотим выполнить
emerge --info
на них всех. Вот что мы можем сделать:for i in `seq 10`; do ssh gmos-$i "emerge --info"; done
Понятное дело, это не очень удобно и не всегда пригодно.
Другое решение — использовать Cluster SSH.
Установка проста:
emerge -av clusterssh
Для работы Cluster SSH требуется X11. Cluster SSH работает таким образом: он открывает окно xterm для каждого хоста. Кроме того, он открывает небольшое окно, куда можно вводить команды, которые должны попадать во все окна xterm.
cssh gmos-{1,2,3,4,5,6,7,8,9}
Если у вас не используется publickey авторизация, не беспокойтесь: вы можете ввести пароль в командное окно (если он одинаковый на всех машинах) или переключаясь по окнам xterm ввести его по отдельности для каждой машины.
Еще одна альтернатива — Tentakel. Tentakel используется более статичным образом: пользователь модифицирует конфигурационный файл, а затем может указать Tentakel на какую группу хостов он хочет залогиниться.
Установка проходит как обычно:
emerge -av tentakel
Далее создадим конфигурационный файл:
<code lang=«bash»echo «set ssh_path=\»`which ssh`\"" >> /etc/tentakel.conf
echo «set method=\»ssh\"" >> /etc/tentakel.conf
echo `group mynet (user=«root»)` >> /etc/tentakel.conf
for i in `seq 10`; do echo -e "\t+gmos-$i"; done >> /etc/tentakel.conf
Может оказаться удобнее отредактировать пример конфигурационного файла, поставляющегося с Tentakel:
cp /usr/share/doc/tentakel/tentakel.conf.example /etc/tentakel.conf
vi /etc/tentakel.conf
После того как вы закончите конфигурацию, можно запустить Tentakel:
tentakel -g mynet
Эта команда запустит интерактивный интерфейс Tentakel. Для того чтобы запускать команды на хостах используйте функицю exec:
exec emerge --info
Узнать о других командах можно с помощью команды help.
Кроме того, вы можете запускать Tentakel в неинтерактивной форме:
tentakel -g ten_gentoos "emerge --info"
Кроме того, существует еще несколько программ для выполнения этой задачи. Вы можете попробовать dsh, pdsh, pconsole и shmux.