<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.31"> <META NAME="LFCATEGORY" CONTENT="UNIXBasics"> <link rel="icon" HREF="../../common/images/lf-16.png" TYPE="image/png"> <TITLE>lf222, UNIXBasics: Exécution d'applications distantes avec X11</TITLE> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-family:monospace,Courier } p.cl { color:#EE9500 } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm; text-align:center } p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:none; border-width:medium; border-color:#aedbe8; padding:0.1cm; text-align:left } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } .mark { background-color:#e6e6ff } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html --> <!-- this is used by a number of tools: =LF=AUTHOR: Guido Socher =LF=CAT___: UNIXBasics =LF=TITLE_: Exécution d'applications distantes avec X11 =LF=NUMBER: 222 =LF=ANAME_: article222.shtml --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar --> <!-- top navegation bar --> <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif" alt="[LinuxFocus-icon]" width="319" height="45" align="left" border="0"></TD> <TD class="top"> <TABLE summary="topbar_1_links" width="100%"> <TR align="right"> <TD class="top"><A class="nodec" href="../index.shtml"><FONT color= "#DDDDDD" size="2">Sommaire</FONT></A> | <A class= "nodec" href="../map.html"><FONT color= "#DDDDDD" size="2">Carte</FONT></A> | <A class="nodec" href="../Themes/index.html"><FONT color= "#DDDDDD" size="2">Index</FONT></A> | <A class="nodec" href="../Search/index.html"><FONT color= "#DDDDDD" size="2">Recherche</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color= "#FFFFFF">Nouvelles</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Archives</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color= "#FFFFFF">Liens</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">A propos</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Cet article est disponible en: <A href="../../English/January2002/article222.shtml">English</a> <A href="../../Castellano/January2002/article222.shtml">Castellano</a> <A href="../../ChineseGB/January2002/article222.shtml">ChineseGB</a> <A href="../../Deutsch/January2002/article222.shtml">Deutsch</a> <A href="../../Francais/January2002/article222.shtml">Francais</a> <A href="../../Italiano/January2002/article222.shtml">Italiano</a> <A href="../../Nederlands/January2002/article222.shtml">Nederlands</a> <A href="../../Portugues/January2002/article222.shtml">Portugues</a> <A href="../../Russian/January2002/article222.shtml">Russian</a> <A href="../../Turkce/January2002/article222.shtml">Turkce</a> <A href="../../Arabic/January2002/article222.shtml">Arabic</a> </FONT></TD></TR></TABLE><br> <!-- SSI_INFO STOP --> <!-- 2pdaIgnoreStop --> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 WIDTH="190" summary="about the author"> <TR> <TD> <!-- 2pdaIgnoreStart --> <!-- PALM DOC --> <TABLE BORDER=0 hspace=4 vspace=4 summary="pda download"> <TR> <TD> <font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font> </TD> </TR> </TABLE> <!-- END PALM DOC --> <!-- 2pdaIgnoreStop --> <br> <IMG src="../../common/images/Guido-S.gif" alt= "[Photo of the Author]" height="164" width="173"> <BR>par Guido Socher <a href="http://linuxfocus.org/~guido/"><font size="1">(homepage)</font></a> <BR><BR> <I>L´auteur:</I><BR> <P> 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. </P> <!-- TRANSLATED TO fr --> <BR><BR><I>Traduit en Fran�ais par:</I><BR> Olivier Pons <small><pons(at)cnam.fr></small> <br> <!-- =LF=TRANSTO=fr: Olivier Pons --> <!-- TRANSLATED TO STOP --> <BR><i>Sommaire</i>: <UL> <LI><A HREF="#222lfindex0">Le concept d'affichage</A></LI> <LI><A HREF="#222lfindex1"> Lancement d'une application à distance </A></LI> <LI><A HREF="#222lfindex2"> Variable DISPLAY à emporter </A></LI> <LI><A HREF="#222lfindex3"> OpenGL </A></LI> <LI><A HREF="#222lfindex4"> Conclusion </A></LI> <LI><A HREF="#222lfindex5">Links</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=222&lang=fr">Discussion sur cet article</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <H2> Exécution d'applications distantes avec X11</H2> <IMG src="../../common/images/illustration222.gif" width="178" height="90" alt="[Illustration]" hspace="10"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Résumé</i>: <P> 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. <br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br> <!-- BODY OF THE ARTICLE --> <A NAME="222lfindex0"> </A> <H2>Le concept d'affichage</H2> <P> 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.<BR> La vitesse du réseau est naturellement importante ici mais une connexion locale à 10Mbit/s est plus que suffisante. </P> <BR> <CENTER> <IMG src="../../common/images/article222/remote.gif" width="200" height="150" alt="[lancement d'une application à distance]"> </CENTER> <BR> <P> A quoi ça sert ? <BR> 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. <BR> 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. <BR> <IMG src="../../common/images/article222/disply.gif" width="256" height="200" alt="[ecran]" align="right" hspace="10" vspace="10"> Comment ça marche <BR> 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: <BR> - 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 : </P> <P class="code"> xhost +movietux <BR> <I> Ceci doit être tapé dans un shell sur philosophus </I></P> <BR> - 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 : <P class="code">xauth extract - philosophus:0.0 | ssh movietux /usr/X11R6/bin/xauth merge<BR> ou <BR> scp ~/.Xauthority movietux:</P> <BR> Le procédé à la mise en route d'un programme (client) est le suivant: <OL> <LI> 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. </LI> <LI> 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. </LI> </OL> La variable d'environnement DISPLAY a la syntaxe suivante : <P class="code"><I>bash:</I>export DISPLAY=hostname:displaynumber.screennumber<BR> <I>tcsh:</I>setenv DISPLAY hostname:displaynumber.screennumber</P> Je ne parlerai pas ici du displaynumber et du screennumber. Normalement c'est simplement 0:0. Un exemple pour bash serait : <P class="code">export DISPLAY=philosophus:0.0</P> <A NAME="222lfindex1"> </A> <H2> Lancement d'une application à distance </H2> 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. <OL> <LI> Informez votre serveur X que les clients de movietux sont autorisés à dessiner des images sur votre écran : <BR> xhost +movietux </LI> <LI>connectez-vous à la machine distante movietux : <BR> slogin -l username movietux </LI> <LI>vous êtes maintenant connecté à movietux et chaque commande que vous tapez est exécutée sur movietux </LI> <LI> export DISPLAY=philosophus:0.0 </LI> <LI>lancez le programme. Par exemple : <BR> netscape & </LI> </OL> 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. <BR> Sympa, non ? <A NAME="222lfindex2"> </A> <H2> Variable DISPLAY à emporter </H2> 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 : <UL> <LI> Si vous utilisez ssh pour vous connecter à la machine distante, la variable DISPLAY est automatiquement définie. D'autres programmes de connexion à distance supportent la variable DISPLAY mais ssh est très répandu. </LI> <LI> Si vous utilisez slogin ou d'autres commandes, vous pouvez installer les scripts suivants sur la machine distante <BR> Pour tcsh : <P class="code"> # emportez votre variable display avec vous lors de la connexion distante :<BR> # mettez-la dans votre fichier ~/.login<BR> set whoami=`who -ml`<BR> set remhost=`expr "$whoami" : '.*(\(.*\))'`<BR> if ( "$remhost" != "" ) then<BR> setenv DISPLAY "$remhost":0.0<BR> endif</P> Ce script fonctionne en récupérant le nom de l'hôte distant à partir de la commande "who -ml". Cette commande retourne quelque chose du genre <P class="code">>who -ml<BR> movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)</P> Si vous utilisez bash, il vous faut le script suivant : <P class="code"> # emportez votre variable display avec vous lors de la connexion distante :<BR> # mettez-la dans votre ~/.bash_profile<br> whoami=`who -ml`<BR> remhost=`expr "$whoami" : '.*(\(.*\))'`<BR> if [ -n "$remhost" ]; then<BR> DISPLAY="$remhost":0.0<BR> export DISPLAY<BR> fi</P> <A NAME="222lfindex3"> </A> <H2> OpenGL </H2> Si les capacités réseau du système X Window sont très bonnes, les graphiques sont un peu plus lents du fait que vous envoyez les données par un protocole de réseau. Normalement vous ne verrez pas grande différence. <br><br> Les applications gourmandes en ressources, telles que les jeux au graphisme intensif sont habituellement basées sur OpenGL (Open Graphics Library) et GLX (extension d'OpenGL au système X Window). Ces bibliothèques fournissent une interface de programmation indépendante du matériel autorisant l'accès direct aux composants d'accélération 3D des cartes graphiques. Autrement dit : l'application envoie la description d'un objet sous forme de points, lignes et polygones à la carte graphique qui génère tout le rendu en interne. Le graphisme devient très rapide. <br><br> Actuellement, la plupart des gestionnaires de cartes graphiques pour Linux ne supportent pas l'accélération GLX/OpenGL pour les applications distantes. Ils ne supportent l'accélération que pour des applications locales. Le résultat, c'est que les applications OpenGL lancées à distance ont du mal à démarrer et sont vraiment lentes. Une exception vient des gestionnaires propriétaires de NVidia. Ils ont une interface de rendu direct qui supporte le rendu indirect pour les applications distantes. <A NAME="222lfindex4"> </A> <H2> Conclusion </H2> L'utilisation de la puissance de calcul de votre réseau est très facile avec X11. Vous pouvez travailler avec des applications distantes de la même manière qu'avec les applications locales. La seule différence que vous rencontrerez, c'est la possibilité de voir les fichiers et le répertoire home de la machine distante. Cependant, avec NFS et NIS installés, vous pouvez masquer cette petite différence et utiliser la pleine puissance du processeur des machines les plus rapides de vos réseaux sans même y penser. <A NAME="222lfindex5"> </A> <H2>Links</H2> <A href="http://www.x.org/">X11 système, x.org</A><BR> <A href="http://www.xfree86.org/">xfree86.org</A> Le système X11 sous Linux<BR> </LI> </UL> <!-- vim: set sw=2 ts=2 et tw=80: --> <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Discussion sur cet article</h2> Chaque article possède sa page de discussion. Vous pouvez y soumettre un commentaire ou lire ceux d´autres lecteurs: <center> <table border="0" CELLSPACING="2" CELLPADDING="1" summary="tb-button-outerpart"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1" summary="tb-button"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=222&lang=fr"><b> page de discussion </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="98%" summary="footer"> <TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%"> <A HREF="../../common/lfteam.html">Site Web maintenu par l´équipe d´édition LinuxFocus</A> <BR><FONT COLOR="#FFFFFF">© Guido Socher, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> </TD> <TD BGCOLOR="#9999AA"> <!-- TRANSLATION INFO --> <font size=2>Translation information:</font> <TABLE summary="translators"> <tr><td><font size="2">en --> -- : Guido Socher (<a href="http://linuxfocus.org/~guido/"><font size="1">homepage</font></a>)</font></td></tr> <tr><td><font size="2">en --> fr: Olivier Pons <pons(at)cnam.fr></font></td></tr> </TABLE> </TD> </TR></TABLE></CENTER> <p><font size=1>2002-10-04, generated by lfparser version 2.31</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>