Вопрос о том, как запускать команды на многих серверах одновременно, возник в списке рассылки Perl на днях, и я дам такую же рекомендацию Я дал там , который должен использовать gsh
:
http://outflux.net/unix/software/gsh
gsh похож на решение "for box in box1_name box2_name box3_name
" уже дано , но я считаю, что gsh более удобен. Вы настраиваете файл / etc / ghosts, содержащий ваши серверы в таких группах, как web, db, RHEL4, x86_64 или что-то еще (man ghosts), а затем используете эту группу при вызове gsh.
[pdurbin@beamish ~]$ gsh web "cat /etc/redhat-release; uname -r"
www-2.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-2.foo.com: 2.6.9-78.0.1.ELsmp
www-3.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-3.foo.com: 2.6.9-78.0.1.ELsmp
www-4.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-4.foo.com: 2.6.18-92.1.13.el5
www-5.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-5.foo.com: 2.6.18-92.1.13.el5
[pdurbin@beamish ~]$
Вы также можете объединять или разбивать группы призраков, например, используя web + db или web-RHEL4.
Я также упомяну, что хотя я никогда не использовал shmux, его веб-сайт содержит список программного обеспечения (включая gsh), которое позволяет вам запускать команды на многих серверах одновременно. Capistrano уже упоминалось и (насколько я понимаю) также может быть в этом списке.