Выполнение команд на нескольких машинах (ssh)
Если вы являетесь администратором достаточно большого количества 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
Далее создадим конфигурационный файл:
> /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</span> 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.
// Эта заметка является переводом части Gentoo Monthly Newsletter за сентябрь 2008.
