Reconectar-se automaticamente (ou mais facilmente) a uma sessão de tela após a interrupção da rede

ADICIONADO: Esta questão está agora, creio, incluída nesta:Usando o GNU Screen de forma totalmente transparente e automática

Veja também esta pergunta relacionada:
https://superuser.com/questions/147873/ssh-sessions-in-xterms-freeze-for-many-minutes-whenever-they-disconnect

Pergunta original:

Seria bom se houvesse uma maneira de ssh para uma máquina e reconectar imediatamente a uma sessão de tela específica. Você consegue fazer isso:

laptop> ssh server.com screen -ls

e mostrará uma lista de telas disponíveis no server.com da seguinte forma [1]:

123.pts-1
456.pts-2

E então você pode tentar fazer isso:

laptop> ssh server.com screen -dr pts-2

mas isso falha, dizendo "Deve estar conectado a um terminal". Você precisa primeiro fazer o ssh e depois fazer o "screen -dr pts-2" no server.com, o que não é bom se você tiver uma conexão esquisita e se desconectar muito. Você deseja continuar com um simples "botão de seta para cima" no laptop. (Ou talvez torne ainda mais automático.)

Eu tenho uma solução rihackulous para este problema que eu postarei como uma resposta e espero que seja rebaixado ao esquecimento em favor do Caminho Certo para lidar com isso.

Notas de rodapé:

[1] Ou melhor, se você criou as sessões de tela com nomes como "screen -S foo"e"screen -S bar", você verá uma lista mais amigável como:

123.foo
456.bar

e pode se reconectar com, por exemplo, "screen -dr foo"

Tutorial em tela mini, incorporando a resposta a esta pergunta:

Faça login no server.com e faça

screen -S foo 

e nunca mais saia dessa sessão novamente. Para reconectá-lo de outro lugar, faça

ssh -t server.com screen -dr foo

Para listar as telas disponíveis para reconectar:

screen -ls

ou, claro,

ssh server.com screen -ls

para verificar as telas disponíveis do server.com remotamente.

Agora uso o seguinte alias (tcsh), com base na resposta de Jason abaixo, para conectar-se a uma tela nomeada, se existir, ou criar e conectar-se de outra forma:

alias ssc 'ssh -t \!:1 "screen -S \!:2 -dr || screen -S \!:2"'

questionAnswers(6)

yourAnswerToTheQuestion