Exécution d'applications distantes avec X11

ArticleCategory: [Choose a category, do not translate this]

UNIX Basics

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to fr Olivier Pons

AboutTheAuthor:[A small biography about the author]

Guido adore Linux non seulement parce qu'il est intéressant de découvrir le fonctionnement des systèmes d'exploitation mais aussi à cause des personnes impliquées dans sa conception.

Abstract:[Here you write a little summary]

Beaucoup de nouveaux venus à Linux pensent que son bureau graphique est juste un autre système "à la Windows" où vous pouvez lancer des applications qui vont apparaître dans des fenêtre séparées. Certains remarquent la possibilité d'avoir plusieurs bureaux mais ça semble s'arrêter là. Le système de fenêtrage X Window de Linux (X11) est beaucoup plus que cela ! C'est un système de fenêtrage réseau. Nous verrons les nouvelles et puissantes fonctionnalités que cela offre.

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Le concept d'affichage

Lors de son lancement, chaque application graphique de X Window lit la variable d'environnement DISPLAY pour découvrir l'écran d'ordinateur auquel envoyer ses graphiques. Si on ajoute les capacités réseau du système X Window, ceci permet d'exécuter des applications graphiques à distance. C'est-à-dire que vous utilisez la puissance du processeur d'une machine alors que vous exécutez l'application à partir d'une autre. L'interface graphique complète apparaît sur la machine d'où vous l'exécutez. Vous ne remarquez pas que vous utilisez 2 ordinateurs.
La vitesse du réseau est naturellement importante ici mais une connexion locale à 10Mbit/s est plus que suffisante.


[lancement d'une application à distance]

A quoi ça sert ?
Il existe de nombreuses applications de ce "graphisme réseau". Des entreprises l'utilisent pour gérer à distance du matériel pouvant se trouver à des milliers de kilomètres et emploient pour le contrôler, la même application que celle qui aurait servi en étant sur place.
Supposons que vous ayez 2 ordinateurs, une machine rapide à 1GHz et un vieux Pentium à 133MHz. Vous pouvez d'autant plus apprécier la vitesse de votre nouvelle machine que vous n'êtes pas assis devant elle. Votre soeur est peut-être actuellement assise devant la machine rapide et travaille avec. Aucune importance, vous continuez à en bénéficier.
[ecran] Comment ça marche
Toutes les applications X Window, qu'elles se nomment gimp, xterm, konquerer, Netscape... sont vraiment des clients réseau qui se connectent à un serveur, le serveur X. La tâche du serveur X est de communiquer avec le matériel graphique, de dessiner les images sur votre écran, de lire les entrées souris et clavier. Les clients (vos programmes tels que gimp, Netscape...) envoient les instructions au serveur sur la façon de dessiner les cadres et les boutons. En échange, ils reçoivent du serveur les évènements souris et clavier. De toute évidence, vous avez besoin d'un certain type d'authentification, sinon n'importe qui pourrait mettre la pagaille sur l'écran de tout le monde. Deux programmes peuvent contrôler l'accès:
- xhost : en utilisant ce programme vous pouvez permettre à n'importe quel utilisateur sur une machine donnée d'écrire des graphiques sur votre écran. Exemple : vous êtes assis devant une machine nommée philosophus. Pour permettre à n'importe quel programme sur l'hôte movietux d'accéder à votre écran sur philosophus vous tapez la commande :

xhost +movietux
Ceci doit être tapé dans un shell sur philosophus


- xauth : C'est une authentification beaucoup plus sophistiquée basée sur l'usage de clés (cookies). Ici vous pouvez vraiment définir des accès individuels. C'est beaucoup plus sûr que xhost. L'authentification utilise une clé (cookie) enregistrée dans le fichier .Xauthority dans le répertoire home de l'utilisateur. Si la machine distante dispose d'une clé valide dans ce fichier alors l'accès est autorisé. Pour copier la clé de la machine devant laquelle vous êtes assis (philosophus) sur l'hôte duquel vous voulez démarrer le programme (movietux), vous pouvez utiliser une des méthodes suivantes :

xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge
ou
scp ~/.Xauthority movietux:


Le procédé à la mise en route d'un programme (client) est le suivant:
  1. Le client contrôle la variable d'environnement DISPLAY pour trouver le serveur, à défaut, il essaie de se connecter sur le serveur de cet hôte.
  2. Le serveur vérifie que le client est autorisé à lui envoyer des "images". Si le client est reconnu, alors le serveur dessine l'image sur l'écran.
La variable d'environnement DISPLAY a la syntaxe suivante :

bash:export DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber

Je ne parlerai pas ici du displaynumber et du screennumber. Normalement c'est simplement 0:0. Un exemple pour bash serait :

export DISPLAY=philosophus:0.0

Lancement d'une application à distance

Après toute la théorie voyons maintenant un exemple pratique. Essayez-le. Nous sommes encore assis devant l'ordinateur appelé philosophus et nous voulons lancer quelque chose à distance depuis movietux.
  1. Informez votre serveur X que les clients de movietux sont autorisés à dessiner des images sur votre écran :
    xhost +movietux
  2. connectez-vous à la machine distante movietux :
    slogin -l username movietux
  3. vous êtes maintenant connecté à movietux et chaque commande que vous tapez est exécutée sur movietux
  4. export DISPLAY=philosophus:0.0
  5. lancez le programme. Par exemple :
    netscape &
Si movietux est une machine puissante, vous noterez que le rendu des pages HTML dans Netscape est beaucoup plus rapide que lorsque vous l'exécutez sur votre propre machine. En même temps vous ne remarquerez pas vraiment, d'un point de vue utilisation, que ce Netscape n'est pas lancé localement car vous le manipulerez de la même manière avec la souris et le clavier.
Sympa, non ?

Variable DISPLAY à emporter

Bien qu'il soit facile d'exécuter une application à distance, il reste ce petit supplément de frappe requis pour définir la variable DISPLAY. Il est possible de l'automatiser :