Aller au contenu principal

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.

Durée estimée : 4 minutes

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

  1. 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=yes fait é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.
  2. 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 avec Ctrl-b % (côte à côte) ou Ctrl-b " (superposés), puis lancez ssh vers un serveur dans chacun. Tapez Ctrl-b : puis setw 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 off rend à chaque panneau son propre clavier. Rien à installer sur les serveurs ; c'est l'outil du travail interactif sur une poignée de machines.
  3. 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 (-f change 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.
  4. 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 ?+
La boucle pour les scripts et tout ce que vous voulez garder dans un journal. tmux quand les serveurs attendent que vous répondiez à des questions ou que vous meniez ensemble un outil plein écran. Ansible quand la même modification doit être reproductible, lancée en parallèle et suivie d'un compte rendu. La barre de broadcast de SSHive pour une vérification rapide sur les sessions déjà ouvertes dans SSHive, quand vous voulez chaque réponse dans son onglet plutôt que dans un seul flux qui défile.
Puis-je diffuser vers une partie seulement des sessions ?+
Non. La barre de broadcast n'a pas de filtre par session : la commande part vers toutes les sessions SSH connectées d'un coup, et le compteur de la barre vous dit combien. Pour laisser un hôte de côté, déconnectez sa session avant d'envoyer. Pour un sous-ensemble fixe, la boucle shell ou Ansible ci-dessus vous laissent nommer les hôtes.
Le broadcast existe-t-il dans l'app iPhone et iPad ?+
Non. Le broadcast fait partie des fonctions qui n'existent que dans l'app Mac.

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