Eu logon via ssh e o primeiro comando é sempre a tela. Posso fazer isso reconectar a mesma sesson ou fazer uma nova se não existir?

0

Basicamente, o que eu quero fazer é algo assim:

tela -session-name = mydefaultscreen

e se o 'nome da sessão' do mydefaultscreen não existir, ele será criado. se já existe, então se reconecta a ele.

Eu sei que posso fazer tela -x $ somenumberhere mas eu quero tudo automático

obrigado

    
por slycat 28.10.2012 / 22:37

2 respostas

0

Você está executando ferramentas GNU em um sistema Windows ou estamos falando de sistemas Linux? Eu assumirei o mais tarde, mas me avise se eu declarar incorretamente.

Veja as páginas de manual para as ofertas de tela de opções de "reconectar". Se minha memória serve, "-r" e "-R" são os que você estará procurando e há uma diferença entre eles. Vou precisar de mais alguns detalhes sobre o que você está experimentando para descrever completamente a maneira de "automaticamente" fazer o que você pediu, mas em suma, pode exigir um pequeno script para realizar. Isso seria para o caso mais complicado. Se você tiver um cenário e requisitos de uso mais simples, pode simplesmente colocar uma ou duas linhas no gancho de shell apropriado (por exemplo, se usar o bash shell, então .bash_profile, .bashrc, ... executará / avaliará seu conteúdo dependendo no cenário).

Você está perdendo ou esgotando sua sessão com frequência? Se assim for, pode haver algumas opções de SSH que precisam ser ajustadas também. O que você está pedindo é capaz, eu só preciso de uma melhor compreensão dos parâmetros que a solução deve ser projetada.

    
por 28.10.2012 / 23:16
0

No seu arquivo .bashrc , você pode verificar se $SSH_CONNECTION (que descreve se o usuário atual está conectado via SSH) está definido e TERM não "screen" (que é o caso se você executá-lo de na tela), como alternativa, verifique o valor de $SHLVL (que descreve o nível de shells aninhados).

Algo como o seguinte em seu .bashrc deve fazer para iniciar a tela automaticamente se você fizer login via SSH:

if [ -n "${SSH_CONNECTION}" -a ${SHLVL} -eq 1 ]; then
    screen -RD
fi

Ele deve voltar a anexá-lo à última sessão de tela ou criar um novo, se necessário. Observe que outros usuários dessa sessão serão desanexados. Você também pode querer dar uma olhada nas várias outras permutações descritas na manpage.

   -d -r   Reattach a session and if necessary detach it first.
   -d -R   Reattach a session and if necessary detach or even create it first.
   -d -RR  Reattach a session and if necessary detach or create it. Use the first session if more than one session is available.
   -D -r   Reattach a session. If necessary detach and logout remotely first.
   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach. If necessary detach and logout remotely first.  If it was not running create it and notify the user. This is the author's favorite.
   -D -RR  Attach here and now. Whatever that means, just do it.

Claro, você também pode definir a tela como seu shell de login.

    
por 28.10.2012 / 23:23