J'ai environ une douzaine de machines Linux sur lesquelles j'ai parfois besoin d'exécuter les mêmes commandes. Existe-t-il un moyen plus simple (ou automatisé) de le faire en plus de se connecter à chaque ordinateur et d'exécuter la commande, un à la fois? Ce ne sont pas les mêmes commandes tout le temps et ce n'est pas à une heure prédéfinie, ce n'est donc pas idéal pour des outils comme cron
.
linux
remote-access
Chris Bunch
la source
la source
Réponses:
Hm, peut-être que pconsole est l'outil que vous voulez.
la source
Il y a aussi ClusterSSH , qui, bien, fait exactement ce que vous pensez qu'il fait. Yay pour la dénomination descriptive!
la source
Vous devriez jeter un coup d'œil à Puppet, voici un article de linux.com sur sa configuration et son utilisation
la source
Ne négligez pas pssh et dsh non plus; ils ressemblent beaucoup à gsh, ce que @Philip Durbin a mentionné.
la source
Vous pouvez essayer Capistrano . À l’origine, il s’agissait d’un outil de déploiement Rails, mais il s’est développé pour faire beaucoup de choses avec des machines distantes.
Pour une approche plus complète de l'administration de plusieurs machines, essayez Chef .
la source
Ansible a la capacité de faire des commandes ad hoc et est également extensible pour une gestion complète de la configuration. La capacité à correspondre en fonction des groupes est excellente.
http://docs.ansible.com/intro_adhoc.html
la source
ansible
fonctionne bien avec des centaines de machines à la fois ou vous pouvez le limiter à n machines à la foisJe suppose que je vais copier et coller ma réponse de Stack Overflow , ce que les gens semblaient aimer. . .
La question de savoir comment exécuter des commandes sur plusieurs serveurs à la fois est apparue sur une liste de diffusion Perl l’autre jour et je vais donner la même recommandation que celle que j’avais donnée , à savoir utiliser gsh: http://outflux.net/unix/ logiciel / gsh
gsh est similaire à la "
for box in box1_name box2_name box3_name
" solution déjà donnée mais je trouve que gsh est plus pratique. Vous configurez un fichier / etc / ghosts contenant vos serveurs dans des groupes tels que web, db, RHEL4, x86_64 ou autre (man ghosts), puis vous utilisez ce groupe lorsque vous appelez gsh.Vous pouvez également combiner ou séparer des groupes fantômes, en utilisant par exemple web + db ou web-RHEL4.
Je mentionnerai également que, même si je n’ai jamais utilisé shmux, son site Web contient une liste de logiciels (y compris gsh) qui vous permettent d’exécuter des commandes sur plusieurs serveurs à la fois. Capistrano a déjà été mentionné et (d'après ce que j'ai compris) pourrait également figurer sur cette liste.
la source
Si vous êtes sur un bureau KDE, konsole a l'option "Envoyer une entrée à toutes les sessions". Cela s'applique à toutes les sessions ouvertes dans la même fenêtre de konsole.
la source
Vous pouvez également essayer
ssh [user@]hostname [command]
et parcourir en boucle les noms d’hôtes.la source
Regardez aussi func. Func vous permet d'utiliser une architecture de module pour contrôler différents aspects d'un système, du traitement des paquetages aux commandes en cours, etc. Il fonctionne sur un module client / serveur via SSL et dispose également d'un schéma d'authentification assez flexible.
la source
J'ai utilisé ClusterSSH et cela fonctionne. Cependant, au-delà d'un certain nombre de terminaux, il 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 clusterssh.
Exemple
(Redémarrez Apache sur tous les hôtes Web.)
la source
-P30
partie signifie "exécute 30 d'entre eux en parallèle"Si vous êtes déjà un utilisateur de tmux, vous pouvez profiter de tmux-cssh (signifie
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 pour chaque serveur dans son propre volet. Toutes les frappes sont copiées dans chaque fenêtre. Selon le nombre d'hôtes, la sortie peut être difficile à lire.la source
Les autres outils sont:
RunDeck peut également être décrit comme étant le ControlTier léger.
Ces outils vous fournissent non seulement un shell de cluster, mais également une interface Web et vous permettent de sauvegarder vos travaux pour une utilisation ultérieure.
la source
Vous pouvez également essayer Cluster SSH (cssh). Je ne l'ai pas utilisé, mais un article sur LinuxJournal.com intitulé "Gérer plusieurs serveurs efficacement" en parle.
la source
Utilisez plat , simple et très puissant! Ce script a changé ma vie :) Un script pour les gouverner tous!
http://nic-nac-project.org/~drimiks/gnu/dish.shtml
Le shell de diligence 'dish' exécute les 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 simple. Dish est similaire au 'dsh' (shell distribué) d'IBM 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, le shell distribué parallèle ou C3, dish est un wrapper distant et facile à utiliser pour les cas où une solution flexible est nécessaire. Vous pouvez consulter la page de manuel du plat en ligne ici.
la source
Voici quelques exemples utilisant les commandes mentionnées dans d'autres réponses:
pdsh
Peut prendre des plages numériques, les sorties avec le nom d'hôte en premier, semblent en réalité maintenues :
version la plus simple:
pdsh -w hostname echo done
sortie:
Exemple plus compliqué:
pdsh -w username@hostname[7-8],username@otherhost "sleep 5 && echo done"
sortie:
Mac:
brew install pdsh
dsh
dsh -m user@host,user@host --remoteshell ssh --concurrent-shell -- "sleep 5 && echo done"
besoin du paramétrage du shell à distance sinon il utilisera "rsh" qui peut même ne pas être disponible.
Mac:
brew install dsh
pssh
pssh -i -H user@host -H user@host "sleep 5 && echo done"
Ils peuvent tous également prendre une liste de machines à partir d'un fichier.
N'hésitez pas à ajouter plus d'exemples ici, c'est un wiki de communauté
Mac:
brew install pssh
Cluster SSH
Le cluster SSH (la "version uniquement mac" apparemment, il existe deux versions, l'autre est ici ) ouvre en réalité de "vrais terminaux" avec un gros terminal au fond qui envoie une entrée à tous les autres. C'est donc comme une interface utilisateur qui l'envoie à plusieurs.
Ex:
csshX hostname0[1-2] hostname3
puis tapez dans la boîte rouge et il va à chaque fenêtre de terminal, une par hôte, qu'il apparaît.mac:
brew install csshx
(une ancienne version mais fonctionne toujours)il y a aussi un
brew install ansible
FWIWla source