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 :
- Passez administrateur :
su - # tapez votre mot de passe
- installez avec yum :
yum install screen
Sur les distributions basées sur Debian comme Ubuntu :
- 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 :
Ajouter une barre d'état : c'est à dire la ligne en bas de l'écran qui liste le terminal utilisé ainsi que tous ceux qui sont ouverts. On peut également afficher l'heure système et le nom d'hôte
Les terminaux lancés par défaut au démarrage : une fonction bien agréable qui vous permet de retrouver, par exemple, votre connexion IRC, le client de messagerie, et vos connexions SSH automatiquement !
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.
- 0 à 9 : passe d'une fenêtre à une autre
- Ctrl+n (NdT : ou directement n): passe à la fenêtre suivante
- Retour Arrière : Passe à la fenêtre précédente
- Ctrl+a : Retourne à la dernière fenêtre utilisée
- A :Change le nom de la fenêtre courante
- K : tue la fenêtre
- c : crée une nouvelle fenêtre
- [ : permet de remonter dans la fenêtre comme avec l'ascenseur en utilisant les flèches haut et bas
- « : affiche la liste des fenêtres et vous permet de naviguer entre elles avec les flèches
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 :
Tapez Ctrl +a, puis « :multiuser on », puis Entrée
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
- Anderson Silva est Ingénieur de version chez Red Hat. Il est titulaire d'une Licence en Informatique de la Liberty University et d'une Maitrise en Informatique de l'Université du Maine. Il est Ingénieur Certifié Red Hat, en vue de devenir Architecte Certifié Red Hat, et écrit des articles en lien avec Linux dans des parutions telles que la Gazette Linux, Revista do Linux et Red Hat Magazine. Anderson est marié depuis 11 ans avec son amour de jeunesse, Joanna, qui l'aide à la rédaction de ses articles et avec qui il a 3 enfants. Quand il ne travaille pas ou n'écrit pas, il fait de la photographie, passe du temps avec sa famille, se balade à vélo, regarde des courses de Formule 1 ou d'Indycar fait du karting avec ses fils. Steve 'Ashcrow' Milner est Analyste de Sécurité chez Red Hat. Il est Ingénieur Certifié Red Hat et est certifié de l'ITIL. Steve a deux chiens, Anubis et Emma-Lee, qui gardent sa maison. Steve occupe son temps libre à regarder des robots, écrire du code ouvert, boire du café, escalader des arbres, et à lire des bds.
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.