Quero usar o tmux ou a tela automaticamente após o ssh. Escrevi algum código em .ss/config que me ajuda com isso.
# ~/.ssh/config
Match exec "[[ $(ps h o args p $PPID | wc -w) -eq 2 ]]"
RemoteCommand SESSION_NAME="debek"; tmux a -t ${SESSION_NAME} || tmux new -s ${SESSION_NAME} || screen -r ${SESSION_NAME} || screen -S ${SESSION_NAME}
RequestTTY yes
Por enquanto, há um problema. Se eu quiser me conectar ao mesmo servidor a partir de um segundo terminal no meu computador local, isso obviamente me anexa ao mesmo nome de sessão "debek". Posso criar SCREEN_NAME="debek-{RANDOM}"
um nome de sessão exclusivo para contornar isso, mas quando, por exemplo, perdi minha conexão e tento me conectar novamente, ele criará um novo nome de sessão, em vez de me conectar ao último automaticamente.
Você tem alguma ideia de como resolver esse problema?
Responder1
Existem algumas coisas que você pode fazer:
Em vez de usar .ssh/config, crie um alias que faça ssh e anexe ao tmux. Então você pode escolher se deseja anexar ou não cada terminal ao fazer o ssh.
Crie dois aliases para o nome do host (em /etc/hosts ou DNS) e configure .ssh/config para executar o tmux apenas se você se conectar a um, mas não ao outro.
Faça com que o comando remoto seja anexado apenas ao tmux se ele ainda não estiver anexado, por exemplo, verificando
tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]
. Outmux display -pt$SESSION_NAME '#{session_attached}'
.