AJOUTÉ : Cette question est maintenant, je crois, subsumée par celle-ci : Utilisation de GNU Screen de manière totalement transparente et automatique
Voir aussi cette question connexe :
https://superuser.com/questions/147873/ssh-sessions-in-xterms-freeze-for-many-minutes-whenever-they-disconnect
Question originale :
Ce serait bien s'il y avait un moyen de se connecter en ssh à une machine et de se reconnecter immédiatement à une session d'écran spécifique. Vous pouvez le faire :
laptop> ssh server.com screen -ls
et il affichera une liste des écrans disponibles sur server.com comme ceci [1] :
123.pts-1
456.pts-2
Et puis vous pourriez essayer de faire ça :
laptop> ssh server.com screen -dr pts-2
mais ça échoue, disant "Doit être connecté à un terminal". Vous devez d'abord vous connecter et ensuite faire le "screen -dr pts-2" sur server.com, ce qui n'est pas bon si votre connexion est fragile et que vous êtes souvent déconnecté. Vous voulez être en mesure de reprendre avec un simple "up-arrow enter" sur l'ordinateur portable. (Ou peut-être le rendre encore plus automatique).
J'ai une solution farfelue à ce problème que je vais poster en tant que réponse en espérant qu'elle sera descendue jusqu'à l'oubli en faveur de la bonne façon de traiter ce problème.
Notes de bas de page :
[1] Ou, mieux encore, si vous avez créé les sessions d'écran avec des noms comme " screen -S foo
" et " screen -S bar
", alors vous obtiendrez une liste plus conviviale comme :
123.foo
456.bar
et peut se reconnecter avec, par exemple, " screen -dr foo
".
Tutoriel sur les écrans miniatures, intégrant la réponse à cette question :
Connectez-vous à server.com et faites
screen -S foo
et ne plus jamais se déconnecter de cette session. Pour s'y reconnecter depuis un autre endroit, faites
ssh -t server.com screen -dr foo
Pour répertorier les écrans disponibles vers lesquels se reconnecter :
screen -ls
ou, bien sûr,
ssh server.com screen -ls
pour vérifier à distance les écrans disponibles de server.com.
J'utilise maintenant l'alias suivant (tcsh), basé sur la réponse de Jason ci-dessous, pour me connecter à un écran nommé s'il existe ou pour créer et me connecter sinon :
alias ssc 'ssh -t \!:1 "screen -S \!:2 -dr || screen -S \!:2"'