{{tag>tmux dockerservice}}
==== Sessions Tmux personnalisées indépendantes ====
Vu que le déploiement des développements sur le serveur de staging
n'est pas automatisé, il faut donner un accès au serveur à
plusieurs utilisateurs pour qu'ils le fassent manuellement.
Par défaut les utilisateurs sont accueillis sur une session tmux à la
connexion.
Le problème c'est que quand plusieurs utilisateurs sont connectés, un
seul utilisateur prend la main ce qui oblige les autres à attendre.
Pour contourner ce problème on peut utiliser les **sessions** de tmux.
Chaque utilisateur aura ainsi une session à son nom.
Ces sessions personalisées sont toutes connectées à la
session principale partagée mais chaque utilisateur pourra naviguer sur le window qui le concerne sans emporter avec lui les autres utilisateurs connectés.
Même si deux utilisateurs sont connectés au même window, ils disposeront de leur curseur personnel et pourront travailler simultanément et indépendemment sur deux panes. FIXME
Pour catcher le nom de l'utilisateur à la connexion on autorise
l'exportation de variables d'environnement à la connexion en
paramétrant le serveur ssh comme suit :
PermitUserEnvironment yes
Ainsi, ajouter une clé ssh de la manière suivante au fichier
''~/.ssh/autorized_keys'' (remarquez le début de la ligne
environment="LC_SSH_USER=aziz") ouvrira une session tmux nommée
''aziz''.
environment="LC_SSH_USER=aziz" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoY3PXIAtJLRk5EU7kfST0BIaiTmp6iVtDKZm+IKsmqG5V0HIjvDeMfXOM8Rx+3lpZRmiGrfvsEpDSe9IHCjqwqtzB3VWSVFcAY/b55FSvbIZGnKuunVYyvYbbY1E8BodeBHnwaPEplHthQNBoDD+mpBiphyNZU72npkRmKyATvgQ62oB3QTNk8bM7L2/Biw1FjVpfZjXmMsivfGA/fSp+r0BEmPEfx+gRDJ6jQ6rfoWtOoadEI18ROpyH6X/5unFPq9qQuBVHrfTQmX9a3tq35FAHWCdNJhTvnMI6/P9BjUCGjygH+1cr2+c3brwt4syv4wP4mHF+pckG3nbxyeq5 aziz@mini
Suivent les fichier nécessaires pour finir ce dispositif.
if [ -f ~/.fire_tmux.bash ]; then
source ~/.fire_tmux.bash
fi
function plug-in-tmux() {
if `tmux ls -F '#{session_name}' | grep $LC_SSH_USER >/dev/null` ; then
tmux attach -t $LC_SSH_USER
else
tmux new -s $LC_SSH_USER -t SDDEV
fi
}
if [ -z "$TMUX" ]; then
if [[ `hostname` == "dockerservice" ]]; then
plug-in-tmux || tmuxinator start ssh_tmux || tmux new -s ssh_tmux
else
tmux attach || tmuxinator start ssh_tmux || tmux new -s ssh_tmux
fi
fi