Problemas com o início automático da tela no login do SSH

7

Estou analisando o link para configurar meu servidor para que ele inicie automaticamente uma sessão de tela quando eu fizer login via SSH.

Eu adicionei o seguinte ao meu .bashrc:

# Auto-screen invocation. see: http://taint.org/wk/RemoteLoginAutoScreen
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session.   Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
  STARTED_SCREEN=1 ; export STARTED_SCREEN
  [ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs
  sleep 1
  screen -RR && exit 0
  # normally, execution of this rc script ends here...
  echo "Screen failed! continuing with normal bash startup"
fi
# [end of auto-screen snippet]

O problema é que sempre tenho uma sessão de tela nomeada desanexada executando um servidor de aplicativos rails. Agora, quando eu faço o login, sou colocado nesta sessão.

Existe alguma maneira de modificar o código acima para não selecionar a sessão por nome ou algum outro valor? Se a sessão desanexada for a única sessão de tela, eu gostaria de iniciar uma nova sessão de tela.

Outro problema que estou encontrando é que quando eu desanexo estou completamente desconectado da minha conexão SSH em vez de apenas sair da sessão de tela.

    
por Daemon of Chaos 13.09.2012 / 00:01

1 resposta

8

Altere para:

if [ -z "$STARTED_SCREEN" ] && [ -n "$SSH_TTY" ]
then
  case $- in
    (*i*)
      STARTED_SCREEN=1; export STARTED_SCREEN
      mkdir -p -- "$HOME/lib/screen-logs"
      screen -RR -S main  ||
        echo >&2 "Screen failed! continuing with normal bash startup"
  esac
fi

Isso é anexar (ou criar) a sessão de tela chamada "main" em vez da outra, e não sair depois que a tela retornar com sucesso.

    
por 13.09.2012 / 00:24