Execute uma sessão tmux existente no login SSH ou crie se não existir

1

Eu quero abrir uma sessão do tmux toda vez que eu fizer login através do SSH no meu servidor. Se a sessão existir, conecte-se a ela, se não, crie e conecte-se a ela.

Acho que preciso editar o arquivo ~/.bashrc para fazer isso, mas não tenho a menor idéia de fazer uma instrução if / else ou algo no script do bash.

Como posso fazer isso?

    
por Leandro Gado 14.09.2015 / 03:04

1 resposta

2

tmux por si só inicia uma nova sessão, tmux attach anexa a uma sessão anterior.

tmux attach falhará se não houver sessão anterior.

Esses dois fatos se combinam para fornecer a seguinte solução:

tmux attach || tmux

Ele tenta tmux attach primeiro e, se falhar, executa tmux sozinho. Isso atribui à sessão anterior, se houver, e inicia uma nova sessão, se não houver. Então essa é a primeira parte.

Para a segunda parte, você quer que este código seja executado toda vez que você efetuar login via SSH. Então você precisa verificar:

  1. se é um shell de login. Isso pode ser feito usando shopt -q login_shell .
  2. se você está conectado via SSH. Isso pode ser feito verificando se $SSH_CLIENT está definido, por exemplo, [ -n "$SSH_CLIENT" ] .

Então você deve adicionar isso ao final do seu .bashrc :

if shopt -q login_shell && [ -n "$SSH_CLIENT" ]; then
    tmux attach || tmux
fi
    
por 14.09.2015 / 04:15

Tags