Lancer une commande sur plusieurs serveurs SSH depuis Mac
Par Lucas Russo, développeur de SSHive · Mis à jour le
Une boucle shell, tmux, Ansible ou la barre de broadcast de SSHive : ce que chacun fait bien, avec les commandes exactes, pour choisir le bon outil selon la tâche.
Vérifier l'espace disque de six serveurs, redémarrer le même service partout, savoir quelle version d'OpenSSL tourne sur chacun : ce genre de tâche revient chaque semaine, et il existe quatre façons raisonnables de la faire depuis un Mac. Trois ne demandent que des outils que vous avez peut-être déjà. La quatrième, la barre de broadcast de SSHive, tape dans les sessions que vous avez déjà ouvertes. Chaque étape ci-dessous présente une méthode, avec la commande à copier et le point où elle cesse d'être le bon outil. Toutes supposent une connexion par clé et non par mot de passe : le guide des clés SSH vous y mène.
Pas à pas
Une boucle shell : scriptée, un serveur après l'autre
Dans le Terminal :for h in web1 web2 web3; do echo "== $h"; ssh -o BatchMode=yes "$h" 'df -h /'; done. Les noms peuvent être des alias Host de~/.ssh/config.BatchMode=yesfait échouer ssh au lieu de s'arrêter sur une demande de mot de passe, d'où l'intérêt des clés. La sortie arrive dans l'ordre, un hôte après l'autre, facile à enregistrer dans un fichier ou à comparer avec celle de la semaine dernière. La boucle convient à tout ce qui n'est pas interactif ; elle ne sait ni répondre à une question ni piloter un éditeur, et avec beaucoup d'hôtes elle est lente, chacun attendant le précédent.tmux : un clavier, plusieurs shells en direct
Installez tmux (brew install tmux), ouvrez une fenêtre et découpez-la en un panneau par serveur avecCtrl-b %(côte à côte) ouCtrl-b "(superposés), puis lancezsshvers un serveur dans chacun. TapezCtrl-b :puissetw synchronize-panes on: tout ce que vous tapez va désormais à tous les panneaux de la fenêtre, réponses aux questions et touches dans les programmes plein écran comprises, et vous les voyez tous côte à côte.setw synchronize-panes offrend à chaque panneau son propre clavier. Rien à installer sur les serveurs ; c'est l'outil du travail interactif sur une poignée de machines.Ansible en ad hoc : en parallèle, avec un compte rendu par hôte
ansible all -i 'web1,web2,web3,' -a 'df -h /'exécute la commande sur les trois hôtes, cinq à la fois par défaut (-fchange ce nombre), et affiche chaque résultat sous le nom de l'hôte avec son statut. La virgule finale indique à Ansible que la liste est un inventaire, pas un nom de fichier. Il faut Ansible sur le Mac et Python sur les serveurs, et c'est le bon outil dès qu'une opération ponctuelle devient une routine hebdomadaire : c'est le moment de l'écrire dans un playbook.La barre de broadcast de SSHive : les sessions déjà ouvertes (Pro)
Connectez-vous à chaque serveur ; chacun ouvre un onglet SSH. Cliquez sur le bouton broadcast de la barre d'outils du terminal : une barre orange BROADCAST s'ouvre au-dessus du terminal, avec un compteur, Sessions (N). Tapez la commande dans le champ de cette barre et appuyez sur Entrée, ou cliquez sur Envoyer. SSHive la tape dans chaque session SSH connectée, suivie d'Entrée, une notification confirme combien de sessions l'ont reçue, et la sortie de chaque serveur reste dans son propre onglet. Pas de sélection par session ni de groupe enregistré : pour exclure un serveur, déconnectez-le d'abord. Échap dans le champ, ou le ×, ferme la barre. Le broadcast est une fonction Pro, propre à l'app Mac ; dans la version gratuite, le bouton porte un badge PRO.
Questions fréquentes
Laquelle des quatre méthodes choisir ?+
Puis-je diffuser vers une partie seulement des sessions ?+
Le broadcast existe-t-il dans l'app iPhone et iPad ?+
Fonctionnalités SSHive associées
Mode Broadcast
Exécution multi-serveurs
Terminal SSH
Terminal accéléré par le GPU
Commandes rapides
Bibliothèque de commandes
Essayer SSHive gratuitement sur macOS
Obtenez le client tout-en-un SSH, SFTP, RDP et VNC pour Mac. Téléchargement gratuit, sans inscription.
Télécharger SSHive gratuitement