Journal Présentation du multiplexer de sessions ssh cssh_tmux

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
20
11
mai
2017

Mon cher Nal,

Si comme moi, tu veux pouvoir lancer la même commande en parallèle sur un groupe de machines et que tu es un utilisateur de tmux, alors cssh_tmux peut éventuellement t'aider.

Démo

Lire la vidéo
(cliquer sur l'image pour voir la vidéo).

Fonctionnement

S'inspirant de csshx, lorsqu'il est invoqué avec une liste d'hôtes ($ ./cssh_tmux.py host1 host2 ....),
cssh_tmux va créer une nouvelle fenêtre (window), et ouvrir chaque session ssh dans un carreau (pane), ainsi qu'un shell leader où tout ce qui sera tapé sera retranscrit dans les autres carreaux.

Cet outil est écrit en python et nécessite tmuxp.

  • # Correction

    Posté par  (site Web personnel) . Évalué à 3.

    Un administrateur pourrait-il corriger le titre en:

    "Présentation du multiplexeur de sessions ssh cssh_tmux" ?

    Merci d'avance!

  • # Mégarde

    Posté par  . Évalué à 3.

    Ce projet semble sympa.

    Ça me rappelle la fois ou j'ai poweroff par mégarde les serveurs aux US plutôt que la machine virtuelle locale… Depuis, j'ai tendance à penser que trop de terminal tue le terminal.

    En même temps, ça reste bien pratique de temps en temps.

    • [^] # Re: Mégarde

      Posté par  (site Web personnel) . Évalué à 5.

      molly-guard !!

      Proverbe Alien : Sauvez la terre ? Mangez des humains !

    • [^] # Re: Mégarde

      Posté par  (site Web personnel) . Évalué à 2.

      Merci,

      Tout à fait d'accord, cet outil est à utiliser avec parcimonie et attention.

    • [^] # Re: Mégarde

      Posté par  . Évalué à 4.

      C'est le genre de truc que normalement tu n'utilises qu'à l'occasion de migrations.

      J'utilisait souvent clusterssh par exemple pour lancer des upgrades en créant des groupes (clusters dans leur nomenclature) de type:
      - srv_test_rh_single_node avec toutes les machines redhat d'un environnement test pour des serveurs qui ne sont pas en cluster
      - srv_test_rh_node1 avec tous les rh noeuds 1 des clusters
      - srv_test_rh_node2 avec tous les rh noeuds 2 des clusters
      etc etc avec plusieurs environnements, plusieurs os/distribs, etc.

      C'est le genre de truc que tu n'utiliseras jamais avec l'entier de ton parc, ou alors faut être très joueur.

      Après dans les cas des upgrades il existe aussi des outils plus spécialisés comme apt-dater (qui je crois ne fonctionne pas que avec apt mais aussi avec yum, zypper & co mais je n'ai jamais essayé hors-contexte debian.

  • # ToolBox

    Posté par  (site Web personnel) . Évalué à 1. Dernière modification le 24/08/19 à 15:19.

    Y'a aussi ClusterShell a rajouter à la toolbox. (NdM: lien corrigé)

    Proverbe Alien : Sauvez la terre ? Mangez des humains !

  • # ou plus simple

    Posté par  . Évalué à 9.

    faire un ctrl+b+:
    et demander "set synchronize-panes"

    tous les tmux de la fenetre sont alors synchroniser,
    cela marche meme en dehors du ssh :D

    • [^] # Re: ou plus simple

      Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 12/05/17 à 09:59.

      Je ne connaissais pas cette fonctionnalité, merci pour l'info !

      Néanmoins un truc que fait l'outil en fait en plus est d'ouvrir les sessions ssh et les panes.

      • [^] # Re: ou plus simple

        Posté par  . Évalué à 3.

        +1

        l'ouverture de plusieurs SSH, directement dans les Panes de tmux, c'est cool
        je n'en ai pas l'utilité personnelle (je dois passer par une machine de rebond), mais le concept est enorme.

        bravo

  • # Mon bidouillage

    Posté par  . Évalué à 6. Dernière modification le 12/05/17 à 15:36.

    Je me permet de partager mon petit script shell (baptisé syncssh) qui semble faire la même chose (peut-être en moins bien mais il a le mérite d'avoir peu de dépendances). Bon je ne suis pas expert en tmux mais ça a fait le boulot quand j'en avait besoin (je n'arrive pas à mettre le shebang #!/bin/sh dans le codeblock :().

       if [ "$#" -lt 1 ]; then
              echo "Usage: $0 ssh_hostname" >&2
              exit 1
            fi
    
            # why does it not work when window name is simply syncssh ? maybe a dead window is haunting my session
            tmux new-window -n syncssh32
            tmux send-keys    -t 0 "exec ssh $1" C-m
            shift
    
            i=1
            for var in "$@"
            do
            tmux split-window -h -t syncssh32
            tmux send-keys    -t $i "exec ssh ${var}" C-m
            i=$(($i+1))
            done
    
            tmux select-layout tiled
            tmux select-pane -t 0
            tmux set-window-option synchronize-panes on > /dev/null

    J'ai également un binding qui me permet lorsque nécessaire de désynchroniser ou resynchroniser les panes.

        bind C-s set-window-option synchronize-panes
  • # Ansible

    Posté par  (site Web personnel) . Évalué à 3.

    Ou utiliser Ansible ou un autre outil du même genre.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.