J'ai une douzaine de boîtes Linux sur lesquelles j'ai occasionnellement besoin d'exécuter la même commande. Y a-t-il un moyen plus facile (ou automatisé) de le faire en dehors de se connecter à chaque machine et d'exécuter la commande, une par une ? Ce ne sont pas les mêmes commandes tout le temps et ce n'est pas à un moment prédéfini, donc ce n'est pas quelque chose d'idéal pour des outils comme cron
.
Réponses
Trop de publicités?Je suppose que je vais copier et coller ma réponse de Stack Overflow, que les gens semblaient apprécier. . .
La question de comment exécuter des commandes sur de nombreux serveurs en même temps est apparue sur une liste de diffusion Perl l'autre jour et je vais donner la même recommandation que j'ai donnée là-bas, qui est d'utiliser gsh: http://outflux.net/unix/software/gsh
gsh est similaire à la solution "for box in box1_name box2_name box3_name
" déjà donnée mais je trouve gsh plus pratique. Vous configurez un fichier /etc/ghosts contenant vos serveurs dans des groupes comme web, db, RHEL4, x86_64, ou autre (man ghosts) puis vous utilisez ce groupe lorsque vous appelez 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 ~]$
Vous pouvez également combiner ou diviser des groupes ghosts, en utilisant web+db ou web-RHEL4, par exemple.
Je mentionnerai également que bien que je n'aie jamais utilisé shmux, son site web contient une liste de logiciels (y compris gsh) qui vous permettent d'exécuter des commandes sur de nombreux serveurs en même temps. Capistrano a déjà été mentionné et (d'après ce que je comprends) pourrait également être sur cette liste.
Jetez également un coup d'œil à func. Func vous permet d'utiliser une architecture de module pour contrôler différents aspects d'un système, de la gestion des packages à l'exécution des commandes, etc. Il fonctionne sur un module client/serveur via SSL et dispose d'un système d'authentification assez flexible également.