Télé-maintenance et Télé-intervention
avec Linux

Un système unix , et plus particulièrement Linux , est particulièrement 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 !

passer le minitel en mode 'vt100' avec Funct 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 sur dans ce cas , on est limité à 1200 bauds , mais c'est bien suffisant pour lancer une sauvegarde , regarder les processus qui tournent ou tout 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 de la télé-intervention, cependant il est de nombreux cas ou il est tout de même intéressant d'avoir une interface graphique.
La 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 vous pouvez sans peine le lancer sur une station distante ! il suffit pour cela de le lancer avec l'option display, par ex:

programme -display nom_de_la_station_ou_numéro_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 marche 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 s'affichant chez vous !

Cependant ceux d'entre vous qui ont essayé cette 'manip' en étant connecté par modem ont pu constater que c'est horriblement lent !

Linux dans ce cas 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, permettant sur des lignes à faible débit ( typiquement un modem à 33600/56000 bps ) d'avoir un accélération d'environ fois 3 ou 4.

Grâce à cela , un programme X devient parfaitement utilisable à travers un modem.

c'est très facile à utiliser , sur votre station , lancez :

lbxproxy -display nom_de_la_station_ou_numéro_ip:0
puis lancez votre programme avec l'option -display unix:63

63 est le numéro de display par défaut de lbxproxy, il peut bien sur être changé avec l'option :numéro , permettant de lancer ainsi plusieurs lbxproxy vers plusieurs serveur 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 pcANYWHERE, faire afficher un programme sur une autre station que celle sur lequel il tourne , mais également le faire afficher sur les deux !
C'est particulièrement intéressant pour de la télé-démonstration ou une personne peut suivre en même temps que le 'professeur' ce qui se passe sur 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'interagir avec la même applications au même moment à partir de différents endroits.

XMX tire parti de la nature distribuée de X11 pour agir comme un intermédiaire entre des clients and des serveurs X. Ainsi XMX marche avec n'importe quel client et n'importe quel serveur sans modification.

Vous pouvez télécharger xmx à l'adresse suivante : http://www.cs.brown.edu/software/xmx/

XMX au contraire de produits Windows comme pcANYWHERE n'est pas limité à 2 stations, mais accepte de partager une session X entre un grand nombre de poste, comme le montre l'illustration :

la session XMX partagée est vu , sur chaque poste, dans une fenêtre particulière dans laquelle se trouve un environnement X11 complet ( clients, Window manager ..)

XMX permet de contrôler qui, parmi les différents postes, à le droit d'avoir les contrôles souris/clavier ou qui n'est que visualisateur !

exemple d'utilisation :

xmx :1 -owncmap -geometry 640x480+10+10 -floor pluton saturne
-view jupiter neptune
lance le server xmx sur le display numéro 1, à partir de là , la fenêtre xmx doit s'afficher sur toutes les machines ( la votre 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 2 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 marcher dans tout environnement standard X , mais cela en comporte aussi les 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 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 chose à lancer, aussi est il plus commode de passer par une petite interface plus conviviale , comme xmxlaunch créé ( en tcl/tk ) par votre serviteur,

XMX comporte tout de même quelques limitations, par exemple il est nécessaire que chacun des postes participant aie 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 poste client.

pour tout savoir sur VNC , veuillez consulter : http://www.uk.research.att.com/vnc/

La grande force de ce logiciel c'est que serveurs et clients existent sur un grand nombre de systèmes, Linux bien sur , mais aussi Windows9x/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 marche é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 arguments.

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, la version Linux est ligne de commande uniquement !
Avis aux développeurs, la contribution est ouverte !


Page principale