Un guide « revisité » sur GNU Screen

Par Anderson Silva et Steve 'Ashcrow' Milner

Vous rappelez-vous comment la navigation par onglets ont révolutionné l'utilisation du WEB ? Vous pouvez retrouver la même chose pour la ligne de commande avec GNU Screen. Screen vous permet de gérer plusieurs shells interactifs dans une même « fenêtre ». Vous pouvez passer d'un terminal à l'autre, accéder directement à n'importe quel d'entre eux, en créer de nouveaux, en tuer d'anciens, en « attacher » et en « détacher » d'autres existants à l'aide de raccourcis clavier.

Au lieu de lancer plusieurs terminaux sur votre bureau ou d'utiliser ces affreux onglets de Gnome ou de Kde, vous pouvez faire mieux et plus simplement avec Screen.

Mais ce n'est pas tout : avec Screen vous pouvez partager vos sessions avec d'autres utilisateurs, et attacher ou détacher des sessions de terminaux. C'est un outil formidable pour ceux qui ont besoin de partager leur environnement de travail entre leur travail et leur domicile.

En ajoutant une barre d'état à l'interface de screen, vous pouvez également nommer les shells à la volée ou à partit du fichier de configuration .screenrc à placer dans votre répertoire personnel.

Installation

L'installation de screen sur une Fedora est plutôt aisée avec yum, en supposant que vous ayez les droits administrateurs :

  1. Passez administrateur :

su - # tapez votre mot de passe
  1. installez avec yum :

yum install screen 

Sur les distributions basées sur Debian comme Ubuntu :

  1. En tant que root :

# apt-get install screen

Tapez votre mot de passe. Screen sera installé en quelques instants, en fonction de votre accès Internet. Mais avant que vous ne commenciez à faire joujou avec, regardons un peu la configuration de base.

Personnaliser le fichier de configuration

Le fichier de configuration de Screen est, comme pour beaucoup d'autres applications, un fichier texte caché (.fichier) dans votre répertoire personnel. Ce fichier est justement nommé .screenrc. Autant que je sache, la plupart des gens utilisent le ~/.screenrc pour deux choses :

Dans l'exemple qui suit les lignes sont numérotées pour que l'on puisse s'y référer. Ce ne sera pas le cas de votre fichier de configuration.

1 hardstatus alwayslastline
2 hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
3
4 # Default screens
5 screen -t shell1 0
6 screen -t shell2 1
7 screen -t server 2 ssh me@myserver

La barre d'état est définie dans les deux premières lignes. La ligne 1 de votre fichier de configuration fixe la barre d'état sur la dernière ligne de Screen. Le contenu de la barre est défini sur la deuxième ligne. Dans le cas présent, voici la barre que vous devriez voir :

[ nom_d_hote ][                  (0*$admin)  1-$ simple                 ][2009-12-08 14:50 ]

Les parenthèses se déplacent en fonction du terminal actif.

La ligne 4 est un commentaire car elle commence par un #. On retrouve les déclarations de screen aux lignes 5 à 7. Elles suivent la syntaxe suivante :

screen -t Nom_de_Terminal Numero_de_Terminal Commande_Shell

Raccourcis clavier

Voici quelques-uns des raccourcis clavier les plus utilisés pour naviguer dans Screen. Notez qu'à moins que ce ne soit modifié dans votre .screenrc, chaque raccourci clavier de Screen commence par Ctrl+a. Ces raccourcis sont également sensibles à la casse.

Si vous souhaitez mieux connaître les raccourcis clavier de Screen, consultez sa page de man :

man screen

Le partage des sessions

Screen peut également être utilisé pour autoriser à d'autres personnes à se connecter à votre poste et à voir ce que vous faites. C'est une excellente méthode pour apprendre à quelqu'un comment travailler en ligne de commande.

Remarque : Si vous souhaitez partager un terminal entre plusieurs utilisateurs, Screen doit avoir le SUID root. Le SUID permet à un exécutable d'être lancé avec les droits du propriétaire du fichier à la place des droits de l'utilisateur qui a lancé le programme. Bien entendu, cela vient avec certains risques de sécurité, vous prenez donc vos responsabilités si vous utilisez cette astuce.

Configurer screen pour le partage de sessions

Tout d'abord, en tant que root :

chmod u+s /usr/bin/screen
chmod 755 /var/run/screen

Re-passez maintenant sous l'utilisateur qui souhaite partager sa session puis lancez screen :

screen

Sous votre nouvelle session screen :

  1. Tapez Ctrl +a, puis « :multiuser on », puis Entrée

  2. Tapez Ctrl+a, puis « :acladd $nom_utilisateur »

Où $nom_utilisateur correspond à l'utilisateur qui va se connecter à votre session Screen.

Se connecter à une session screen

Maintenant que vous avez partagé la session, essayons de nous attacher à cette session et à l'observer en se connectant à la machine via ssh et en tapant :

screen -x $nom_utilisateur/

Où $nom_utilisateur est celui de la personne qui partage la session. Le / est nécessaire à la fin de la commande. Désormais les deux utilisateurs (local et distant) partagent la session screen et peuvent taper des commandes dans le terminal.

Travailler de différents endroits

Disons que vous avez une session screen lancée au travail avec X fenêtres. Parmi ces fenêtres, vous avez un client IRC, une connexion SSH sur le serveur WEB et votre client de messagerie en mode texte favori. Il est 17h et vous devez rentrer à la maison, mais vous avez encore du travail. Avec Screen, vous pourriez rentrer, vous connecter au réseau de votre travail par VPN, et lancer tous les shells dont vous avez besoin pour travailler de chez vous. Screen vous rend la vie un petit peu plus facile.

Vous pouvez vous connecter en SSH à votre poste de travail et lister les sessions screen disponibles avec cette commande :

screen -ls

Puis vous vous connectez à la session que vous utilisiez avec cette commande :

screen -x nom_session_screen

Screen vous permet de reprendre les choses exactement là où vous en étiez.

Une fois que vous serez habitués aux raccourcis de GNU Screen, non seulement votre bureau sera plus propre et organisé puisque vous aurez ouvert moins de fenêtres, mais vous gagnerez également en efficacité, en tant que développeur ou administrateur système, à la maison comme au travail.

Les auteurs

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : [http://wiki.traduc.org/Gazette_Linux].

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.