1 votes

Détacher de la session tmux locale pour l'attacher à un tmux distant ?

Actuellement, mes nouvelles instances Konsole apparaissent déjà dans une session tmux, qu'elle soit nouvelle ou attachée, puisque tmux est génial et que vous devriez toujours être dans tmux, n'est-ce pas ?

Cependant, cela me met dans une situation délicate si je souhaite me connecter à une session tmux gérée à distance. Actuellement, je suis obligé de prévoir avant d'ouvrir une nouvelle fenêtre Konsole que cette fenêtre ne doit pas être gérée par tmux local, et plutôt ouvrir une invite bash simple à partir de laquelle je peux "ssh host_foo -e tmux attach".

Idéalement, j'aimerais pouvoir détacher le processus client tmux en cours et passer automatiquement à l'invocation de ssh et de tmux à distance, qui serait basée sur la commande émise depuis la session. Je m'attends à ce que l'interaction fonctionne comme suit :

[me@local] ~ $ tmux attach
 .... pop into local tmux session ....
[me@local] ~/tmuxdir $ ls
 tmuxfile1 tmuxfile2
[me@local] ~/tmuxdir $ detach-and-ssh foo
 .... pops out of local tmux session ....
 .... and into remote tmux session on host foo ....
[me@foo] ~ $ ls 
 remotefile1 remotefile2
[me@foo] ~ $ tmux detach
 .... pops out of remote tmux session ....
 .... and back into local tmux session ....
[me@local] ~/tmuxdir $ 

J'ai le sentiment que cela pourrait être réalisé en écrivant un wrapper script pour appeler "tmux attach" en premier lieu, qui rechercherait une commande à appeler lors du détachement. Celle-ci pourrait être écrite dans un fichier par le script de détachement et d'envoi. Enfin, après que la partie externe de detach-and-ssh (qui est juste ssh) soit terminée, le script boucle à nouveau sur tmux attach.

Tant qu'une seule commande de détachement est exécutée à la fois, une seule commande post-détachement suffit. Cependant, il serait préférable de s'assurer que le script post-detach soit limité à ce seul client tmux. Si la session/client avait une certaine connaissance du PID spécifique du wrapper, éventuellement via des variables d'environnement ou une autre variable tmux, la commande post-detach pourrait être écrite dans un fichier spécifique au PID.

Quelqu'un a-t-il essayé quelque chose de ce genre, et si oui, quelles leçons en avez-vous tirées ?

Note : veuillez ne pas no suggérer de faire fonctionner toutes les connexions distantes Windows sous mon tmux local. Le tmux local est sur un ordinateur portable qui hiberne et toutes mes sessions distantes en cours seront perdues à ce moment-là. Les sessions distantes ont vraiment besoin d'être gérées par un tmux distant.

Merci !

1voto

Likeyn Points 151

Alternativement, vous pouvez imbriquer vos sessions tmux. Il suffit de créer un nouvel écran dans votre tmux local, de vous connecter à votre tmux distant et de vous connecter à l'écran de votre choix. foo et s'attacher à la session tmux distante. Détacher ou tuer votre session locale ne tuera pas la session distante.

Nota: Pour envoyer des commandes tmux à la session imbriquée, cliquez sur Ctrl + B deux fois (ou n fois, si vous avez n sessions imbriquées).

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