40 votes

Linux - Exécuter la même commande sur plusieurs machines en même temps

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.

4voto

JDS Points 2488

J'ai utilisé ClusterSSH et ça marche. Cependant, au-delà d'un certain nombre de terminaux, ça ne s'adapte pas bien.

Je suis surpris que personne n'ait mentionné xargs. Xargs est parfait pour la plupart des choses. En fait, je suis tellement à l'aise avec ça que je n'utilise plus du tout clusterssh.

Exemple

echo -n host1 host2 host3 host4|xargs -d" " -n1 -P30 -I+ ssh + "sudo service apache2 restart"

(Redémarrer apache sur tous les hôtes web.)

4voto

appleshampoo Points 41

Si vous êtes déjà un utilisateur de tmux, vous pourriez apprécier tmux-cssh (pour TMUX-C(luster)-SSH). Vous lui donnez une liste de noms de serveurs et il ouvre une nouvelle fenêtre tmux avec une session SSH ouverte vers chaque serveur dans sa propre fenêtre. Toutes les frappes clavier sont copiées dans chaque fenêtre. En fonction du nombre d'hôtes, la sortie peut être difficile à lire.

3voto

Christian Points 4555

Autres outils sont:

RunDeck pourrait également être décrit comme le ControlTier léger.

Ces outils vous fournissent non seulement un shell de cluster, mais aussi une interface web et vous permettent d'enregistrer vos tâches pour une utilisation future.

2voto

Brad Beyenhof Points 544

Vous pouvez également essayer Cluster SSH (cssh). Je ne l'ai pas utilisé, mais il y a un article sur LinuxJournal.com intitulé "Gérer plusieurs serveurs efficacement" qui en parle.

1voto

Jeff Mercado Points 20372

Utilisez dish, simple et très puissant ! Ce script a changé ma vie :) Un script pour tous les gouverner !

http://nic-nac-project.org/~drimiks/gnu/dish.shtml

La coquille diligente 'dish' exécute des commandes via ssh/rsh/telnet/mysql simultanément sur plusieurs systèmes. Changer de mot de passe, mettre à jour la configuration, copier des fichiers, vérifier l'état, etc. sur des centaines de nœuds est alors simplifié. Dish est similaire au 'dsh' d'IBM (shell distribué) mais permet en outre l'exécution à distance de commandes nécessitant une authentification. Comparé à d'autres packages open source qui incluent un shell distribué (ou des outils similaires) comme ClusterIt, le shell de danseur, shell distribué parallèle, ou C3, dish est un wrapper de shell à distance mince et facile à utiliser pour les cas où une solution flexible est nécessaire. Vous pouvez consulter la page de manuel de dish en ligne ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X