Un système Unix, et plus particulièrement Linux, est très bien adapté pour la télé intervention. En effet, la ligne de commande, que l'on considère souvent comme une faiblesse voire un frein s'avère ici être un atout important !
Sur un système Unix / Linux, on peut tout faire avec des commandes en ligne. Cela autorise un administrateur à se connecter sur la machine (avec telnet par exemple) à partir de n'importe quel autre point du réseau (Internet ou intranet) et à effectuer toutes les opérations nécessaires avec un terminal quelconque. Nul besoin de se déplacer sur la console de la machine en question. Si le système en question comprend un modem, alors même un simple minitel suffit pour se connecter !
Passez le minitel en mode "vt100" avec Funet T + A, puis composez le numéro. Vous tombez sur le login, loggez-vous et faites votre travail ! Essayez donc d'en faire autant avec Windows ! Bien sûr, dans ce cas, on est limité à 1200 bauds, mais c'est bien suffisant pour lancer une sauvegarde, regarder les processus qui tournent ou toute autre opération qu'un administrateur est amené à faire !
Nous venons de voir que la ligne de commande, avec sa très faible consommation de bande passante est parfaite pour la télé intervention. Cependant, il est de nombreux cas où il est tout de même intéressant d'avoir une interface graphique. Là encore, Unix / Linux avec le système graphique X11 est particulièrement bien adapté. En effet, tout programme graphique que vous lancez sur votre station peut sans peine être lancé sur une station distante ! Il suffit pour cela de le faire avec l'option display, par exemple :
programme -display nom_de_la_station_ou_numero_ip:0
Ce genre de chose n'est pas possible avec Windows sans acheter de logiciels spécialisés. Ce que je viens de mentionner fonctionne sur un réseau local, mais également sur Internet. Rien de plus facile que de faire tourner un programme à l'autre bout du monde tout en l'affichant chez vous ! Cependant, ceux d'entre vous qui ont essayé cette manip étant connectés par modem ont pu constater que c'est horriblement lent ! Linux peut apporter une solution à ce problème :
LBXPROXY (Low Bandwidth X Proxy)
Il s'agit d'un programme qui compresse et optimise le dialogue X11 entre les clients et le serveur et qui permet, sur des lignes à faible débit (typiquement un modem 33600 / 56000 bps) d'accélérer d'environ 3 ou 4 fois la vitesse de transmission. Grâce à cela, un programme X devient parfaitement utilisable à travers un modem. Très facile à utiliser, il suffit, sur votre station, de lancer :
lbxproxy -display nom_de_la_station_ou_numero_ip:0
Puis de lancer votre programme avec l'option -display unix:63. 63 est le numéro de display par défaut de lbxproxy. Il peut bien sûr être changé avec l'option : numéro, permettant de lancer ainsi plusieurs lbxproxy vers plusieurs serveurs X cible, par exemple :
lbxproxy :63 -display premier_serveur_X:0
lbxproxy :62 -display deuxième_serveur_X:0
Puis
programme1 -display unix:63
programme2 -display unix:62
lbxproxy se comporte exactement comme un serveur X. Il est donc totalement transparent pour le programme client. Cependant, il requiert pour fonctionner que le serveur X cible comprenne l'extension LBX. On peut vérifier les extensions du serveur X avec la commande xdpyinfo. Pas d'inquiétude cependant, tous les serveurs XFree86 raisonnablement récents comprennent LBX.
Il faut noter que, bien qu'étant surtout utilisé sur des connexions à faible débit (modem), lbxproxy peut également être utilisé sur un réseau local pour en faire baisser la charge. On peut, sous Windows, à l'aide de quelques logiciels spécialisés (payants) du style PC Anywhere, faire afficher un programme sur une autre station que celle sur laquelle il tourne, mais également le faire afficher sur les deux ! C'est particulièrement intéressant pour faire de la télé démonstration ou pour permettre à des étudiants, par exemple, de suivre en même temps que le professeur ce qui se passe à l'écran. X11 ne permet pas nativement ce genre de chose, mais pas de panique, il existe bien sûr quelques solutions avec Linux.
XMX
XMX est un multiplexeur pour protocole X11. C'est un utilitaire qui permet de partager une session X Window entre différents displays. Il permet à un utilisateur de visualiser et d'intéragir avec la même application au même moment à partir de différents endroits.
XMX tire partie de la nature distribuée de X11 pour agir en tant qu'un intermédiaire entre des clients et des serveurs X. Ainsi, XMX fonctionne avec n'importe quel client et n'importe quel serveur sans modifications. Vous pouvez télécharger XMX à l'adresse suivante : http://www.cs.brown.edu/software/xmx
XMX, à l'opposé de produits Windows comme PC Anywhere, n'est pas limité à 2 stations, mais accepte de partager une session X entre un grand nombre de postes, comme le montre la photo ci-dessous :
La session XMX partagée est vue, sur chaque poste, dans une fenêtre particulière dans laquelle se trouve un environnement X11 complet (clients, Window mangager) XMX permet de contrôler qui, parmi les différents postes, détient les contrôles souris / clavier ou n'est que visualisateur !
Exemple d'utilisation :
xmx :1 -owncmap -geometry 640x480+10+10 -floor pluton saturne -view jupiter neptune
A partir de là, la fenêtre XMX doit s'afficher sur toutes les machines (la vôtre plus pluton saturne jupiter et neptune). Il suffit ensuite de lancer des programmes sur ce display (numéro 1), par exemple :
xv -display unix:1
L'application apparaîtra simultanément sur tous les postes et les différentes actions effectuées à partir de n'importe quel poste seront répercutées sur tous les autres ! XMX est livré avec l'utilitaire xmxinit qui permet en une seule action de lancer la session partagée complète sans avoir à lancer tous les clients un par un. xmxinit utilise deux fichiers de configuration :
~/.xmxserverrc qui contient la commande de lancement du serveur XMX. Dans notre exemple, on aura donc :
xmx :1 -owncmap -geometry 640x480+10+10 -floor pluton saturne -view jupiter neptune
~/.xmxinitrc similaire à un fichier .xinitrc, qui contient la liste des clients à lancer au démarrage. Par exemple :
fvwm &
xsetroot -solid gray45 &
xterm -ls -geometry +10+10
Il suffit alors de lancer xmxinit pour que toute la session partagée apparaisse.
XMX utilise le protocole X11 pour fonctionner, ce qui lui permet de pouvoir opérer dans tout environnement standard X, mais cela comporte aussi des inconvénients, à savoir l'extrême lenteur si l'on se trouve sur un réseau à faible débit. On peut cependant utiliser le même accélérateur que pour un client X normal. En combinant ainsi XMX et lbxproxy, on arrive à travailler simultanément sur plusieurs postes connectés par modem de manière tout à fait satisfaisante ! Si l'on reprend notre exemple, l'on aura alors :
lbxproxy :63 -display pluton:0
lbxproxy :62 -display saturne:0
lbxproxy :61 -display jupiter:0
lbxproxy :60 -display neptune:0
xmx :1 -owncmap -geometry 640x480+10+10 -floor unix:63 unix:62 -view unix:61 unix:60
Cependant, cela commence à faire beaucoup de choses à lancer. Aussi est-il plus commode de passer par une petite interface plus conviviale comme xmxlaunch, créée (en tcl/tk) par votre serviteur. XMX comporte tout de même quelques limitations. Par exemple, il est nécessaire que chacun des postes participants ait le même nombre de couleurs. Cela peut être gênant dans certaines circonstances, aussi allons-nous parler d'une autre solution possible :
VNC (Virtual Network Computing)
VNC est un système client / serveur permettant de visualiser l'environnement graphique du serveur sur un nombre quelconque de postes client. Pour tout savoir sur VNC, veuillez consulter : http://www.uk.research.att.com/vnc/
La grande force de ce logiciel est que serveurs et clients existent sur un grand nombre de systèmes : Linux bien sûr, mais aussi Windows 9x / NT, Solaris, Macintosh, etc. On peut donc visualiser et travailler sur son poste de travail Linux à partir d'une station Windows ou bien, chose beaucoup plus rare, utiliser un poste Windows à partir de sa station Linux. Bien entendu, cela fonctionne également entre stations Unix.
La distribution de VNC comprend donc un programme serveur et un programme client (viewer). Il faut lancer vnc serveur sur la station que l'on veut visualiser, puis lancer vnc viewer sur la ou les stations qui veulent avoir accès à l'environnement graphique du serveur !
Chose intéressante, il n'y a pas d'état stocké dans le viewer. On peut le quitter à tout moment, puis y revenir (éventuellement à partir d'une autre station). On retrouvera l'environnement tel qu'on l'avait laissé ! L'accès au serveur est protégé par un mot de passe, pour éviter tout accès non autorisé. L'utilisation est réellement très simple. Ainsi, pour être client sous Linux :
vncviewer -shared nom_de_machine_ou_numéro_ip:i
vncviewer demande ensuite le mot de passe associé à ce serveur, puis affiche la fenêtre ! Sous Windows, le serveur vnc permet d'exporter le bureau de Windows. Sous Linux, le serveur vnc se comporte comme un autre serveur X, sur lequel on peut faire tourner n'importe quel programme X11. C'est ce serveur qui sera exporté ! On le lance par exemple ainsi :
vncserver :3 -depth 16 -geometry 800x600
vncserver demande alors le mot de passe que l'on veut associer au serveur. Ce mot de passe pourra être changé par la suite avec le programme vncpasswd. vncserver est en fait un script Perl qui lance le véritable programme Xvnc. On peut modifier ce script pour y changer la géométrie, le nombre de couleurs et surtout les clients X11 que l'on veut lancer par défaut. Il suffit alors de lancer simplement vncserver sans argument.
VNC n'utilise pas le protocole X11, il ne peut donc pas être accéléré avec lbxproxy. C'est néanmoins un logiciel très pratique et simple à utiliser qui peut rendre de grands services dans une configuration réseau hétérogène. Un petit regret cependant, la version Windows de VNC comprend une interface graphique pour lancer le serveur et le client, mais la version Linux est en ligne de comande uniquement ! Avis aux développeurs, la contribution est ouverte !
Linux Magazine France n° 7 - Juin 99