Linux Term HOWTO v1.1, version francaise. par Patrick Reijnen, patrickr@cs.kun.nl 12 Mai 1995 Ce document expose les bases de l'installation et du fonctionnement de term, programme grace auquel il est possible de multiplexer une liai- son serie entre deux machines dont l'une est connectee a un reseau. On peut ainsi mettre en place une connexion au reseau sur la seconde machine. 11.. IInnffoorrmmaattiioonnss lleeggaalleess 11..11.. VVeerrssiioonn ffrraannccaaiissee 11..11..11.. CCooppyyrriigghhtt Ce document peut etre librement distribue, sous quelque forme que ce soit, s'il l'est gratuitement et dans son integralite. Des extraits peuvent en etre diffuses, sous reserve que les presentes informations de _c_o_p_y_r_i_g_h_t soient incluses et que le lecteur soit informe du fait qu'il ne s'agit pas de la version integrale, dont on indiquera comment se la procurer. Ce document pourra etre inclus dans des distributions commerciales sans consentement explicite prealable. L'auteur souhaite cependant etre averti de telles utilisations. Ce HOWTO pourra etre traduit dans toute langue, a condition que les informations de _c_o_p_y_r_i_g_h_t et de limitation de garantie soient fournies sous leur forme originelle et que l'identite du traducteur soit indiquee dans la traduction (-- Le traducteur est en l'occurence Arnaud Ruch (ruch@labri.u-bordeaux.fr).--) . Le traducteur souhaite de plus etre informe de toute utilisation de ce document dans une distribution commerciale. 11..11..22.. LLiimmiittaattiioonn ddee ggaarraannttiiee Bien que l'auteur ait essaye de fournir les informations les plus exactes et recentes possibles, il ne peut garantir que l'utilisation de ce document ne provoquera pas la perte de donnees. Il ne fournit donc AAUUCCUUNNEE GGAARRAANNTTIIEE sur les informations contenues dans ce HOWTO et ne pourra en aucun cas etre tenu pour responsable de quelconques dommages resultant de son utilisation (-- Il en va bien entendu de meme du traducteur.--) 11..22.. VVeerrssiioonn oorriiggiinnaallee 11..22..11.. CCooppyyrriigghhtt ssttaatteemmeenntt This document may be distributed freely as a whole in any form and free of charge. Parts of this document may be distributed, provided that this copyright message is included and the reader is informed that this is not the full HOWTO document. Furthermore, there is to be a pointer as to where the full document can be obtained. Specifically, it may be included in commercial distributions, without prior consent. However, I would like to be informed of such usage. This HOWTO may be translated into any language, whatsoever, provided that you leave this copyright statement and the disclaimer intact, and that a notice is appended stating who translated the document. 11..22..22.. DDIISSCCLLAAIIMMEERR While I have tried to include the most correct and up-to-date information available, I cannot guarantee that usage of the information in this document does not result in loss of data. I provide NNOO WWAARRRRAANNTTYY about the information in this HOWTO and I cannot be made liable for any consequences for any damage resulting from using information in this HOWTO. 22.. IInnttrroodduuccttiioonn 22..11.. AA pprrooppooss ddee ccee ddooccuummeenntt Ce HOWTO tente de dissiper la confusion que peut engendrer l'utilisation de term, remarquable programme de Michael O'Reilly grace auquel il est possible de multiplexer une liaison serie, afin de mettre en place une connexion a un reseau. La documentation fournie avec term etant de relativement bonne qualite, ce document ne vise en aucun cas a la remplacer. Son intention est d'expliquer sur quelles bases fonctionne term et de detailler les etapes necessaires a la mise en place de quelques-uns des services reseau les plus courants. L'auteur insiste sur le fait que ce document ne couvre pas l'ensemble de ce qu'il y a a connaitre sur term. Apres l'avoir parcouru, reportez-vous aux pages du manuel qui contiennent de nombreuses informations complementaires. 22..22.. QQuu''eesstt--ccee qquuee tteerrmm ? term est un programme ecrit par Michael O'Reilly (michael@iinet.com.au) et maintenu par Bill Riemers (bcr@physics.purdue.edu), qui permet a plusieurs connexions d'operer simultanement sur une meme liaison serie. Il est par exemple possible de telecharger un fichier tout en travaillant sur un site distant different, et ce grace a la meme liaison modem. term permet egalement de lancer des clients X Windows par l'intermediaire de cette meme liaison. Grace aux utilitaires tredir et tudpredir, term est en mesure de fournir la plupart des services reseau TCP/IP et UDP traditionnels : _m_a_i_l, _n_e_w_s, ftp, telnet, xarchie, etc. D'un certain point de vue, term est tres semblable aux autres protocoles serie tel que SLIP et PPP, mais son avantage est d'etre execute integralement depuis l'espace utilisateur. Il ne requiert donc aucune intervention d'administrateurs systeme ou reseau. Contrairement a SLIP ou PPP, votre machine ne possede pas sa propre adresse IP. Tout le trafic a destination de votre machine doit donc etre adresse a une machine distante, qui se charge de le rediriger vers elle par l'intermediaire de term. 33.. CCoommmmeenntt tteerrmm fonctionne-t-il ? Avant de vous lancer dans l'experimentation de term, il est vivement recommande de lire ce chapitre dans son integralite et de parcourir le fichier 'INSTALLATION' fourni avec term. Examinez egalement les pages de manuel de linecheck, (term)test et term. Vous pourrez alors travailler plus facilement et plus rapidement. 33..11.. NNoommeennccllaattuurree Supposons que vous appelez une machine par l'intermediaire d'un quelconque serveur de terminal. Les termes _l_o_c_a_l et _d_i_s_t_a_n_t se referent respectivement au systeme local et a la machine distante, qui est connectee au reseau. La machine locale n'est pas directement reliee au reseau. term est cependant capable, en utilisant la connexion au reseau dont dispose la machine distante, de lui fournir des services reseau, par l'intermediaire de la liasion serie. Examinons comment une machine dotee d'une connexion reseau traditionnelle fournit ces services. Dans un premier temps, l'utilisateur lance un programme tel que ftp ou telnet. Ce programme demande un service reseau par un appel systeme. Le systeme d'exploitation obtient alors ce service de son interface reseau (par exemple, il envoie et recoit des paquets _e_t_h_e_r_n_e_t). SLIP et PPP procedent exactement de la meme facon, en transformant en interface reseau votre liaison modem. En pratique en effet, une liaison serie n'est guere differente d'une liaison _e_t_h_e_r_n_e_t. L'inconvenient majeur de ces protocoles est qu'ils font de la machine connectee par modem une part integrante du reseau, avec les nombreuses charges d'administration qui en decoulent (plus, en fait, puisque la liaison modem doit egalement etre administree). En l'absence d'une connexion reseau telle que SLIP ou PPP, que fait-on habituellement ? Et bien, on appelle une machine connectee au reseau, on lit son courrier, ses _n_e_w_s, etc. Lorsqu'on a besoin d'un fichier, on commence par le transferer sur la machine distante, puis on le rapatrie sur la machine locale grace a kermit ou un autre programme de communication. Tout ceci est quelque peu astreignant, d'autant plus que vous ne pouvez utiliser votre liaison modem que pour une operation a la fois. L'idee a la base de term est d'automatiser et de multiplexer ces operations. term est lance a la fois sur la machine locale et sur la machine distante, les deux processus communiquant par la liaison modem. Lorsque vous avez besoin d'un service reseau, vous adressez une requete au demon term local, qui la retransmet au demon term qui s'execute sur la machine connectee au reseau. Le resultat est alors renvoye par l'intermediaire de la liaison modem. Pour etre plus concret, disons que vous souhaitez recuperer un fichier grace a ftp. Tout d'abord, il vous faut une version de ftp capable de dialoguer avec term. Vous lancez ce termftp comme un ftp classique, par la commande termftp nethost.gov, par exemple. La difference est que cette version particuliere de ftp adresse sa requete au demon term local plutot qu'au noyau. Le demon term local retransmet cette requete au term distant par l'intermediaire de la liaison modem, celui-ci se chargeant alors d'ouvrir une connexion ftp avec nethost.gov et de renvoyer les donnees. term est suffisament astucieux pour vous permettre de gerer de nombreuses actions a, la fois de telle sorte qu'il vous est possible d'avoir plusieurs sessions ouvertes simultanement sur la meme liaison modem (par exemple, vous pouvez etre connecte a une machine distante par termtelnet pendant que le transfert termftp se poursuit). Ne vous inquietez pas si tout ceci vous semble trop abstrait (ou bien confus) : ce qu'il faut ici retenir est qu'il y a _d_e_u_x occurences de term qui s'executent, chacune a une extremite de la liaison modem. 44.. MMiissee eenn ppllaaccee 44..11.. CCee ddoonntt vvoouuss ddeevveezz ddiissppoosseerr Avant de commencer a construire term, il vous faut etre sur que votre noyau a ete compile avec l'option TCP/IP. L'interface TCP/IP loopback doit egalement avoir ete activee. Une fois que ceci est fait, vous pouvez parcourir le reste de ce paragraphe. 44..22.. EExxpplliiccaattiioonn ddeess ccoonncceeppttss Dans les dernieres versions de term, deux nouveaux concepts ont fait leur apparition. Les deux paragraphes suivants y sont consacres. 44..22..11.. LLee ppaarrttaaggee Depuis la version 1.16 de term, le concept de _p_a_r_t_a_g_e de la connexion term avec d'autres utilisateurs est apparu. Si, par exemple, vous travaillez sur la machine distante via votre connexion term (vous avez utilise trsh pour vous connecter depuis votre machine locale), un autre utilisateur peut utiliser la meme connexion pour transferer par ftp un fichier sur son compte sur la machine locale, depuis un site ftp distant. Lorsque vous desactivez les possibilites de partage (c'est-a-dire que vous utilisez term en mode _p_r_i_v_e), vous seul (en plus de _r_o_o_t :-) pouvez utiliser la connexion term. Bien sur, vous n'avez besoin d'installer le term partage qu'a l'extremite a laquelle vous voulez permettre a d'autres utilisateurs de profiter de la meme connexion term que vous. Ainsi, si d'autres utilisateurs ont un compte sur votre machine locale et souhaitent l'utiliser depuis une autre machine du reseau distant, il vous faut activer le partage a l'extremite distante de la connexion term. De cette facon, ces personnes peuvent se connecter a votre machine locale en utilisant la meme connexion term que vous. (NOTE : le premier exemple supposait que le partage soit active a l'extremite locale de la connexion). NNOOTTEE ssuurr ll''iinnssttaallllaattiioonn eenn ttaanntt qquuee rroooott :: Lorsque vous installez term en tant que _r_o_o_t, il vous faut au prealable creer un groupe _t_e_r_m (avant la compilation) ne contenant aucun utilisateur. Ceci se fait par l'ajout de la ligne suivante au fichier '/etc/group' : term::16:root ou tout _G_I_D inutilise autre que 16, si 16 est deja attribue. Apres la compilation et l'installation, rendez term et ses clients _S_U_I_D, grace aux commandes : chgrp term chmod g+s Procedez de meme avec tout autre programme utilisant term. 44..22..22.. RReesseeaauu tteerrmm integral On utilise l'expression de _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l depuis la version 2.0.0 de term. Lorsque votre seule connexion au monde exterieur est une connexion term, vous disposez d'un _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Il vous faut alors compiler term avec cette option. Dans ce cas, un fichier 'termnet' est place dans votre repertoire partage. Ceci indique a term qu'il assure votre unique connexion avec le monde exterieur. Si vous avez egalement un autre type de connexion reseau vers l'exterieur, les programmes qui savent utiliser term tenteront dans un premier temps d'utiliser cette connexion. Si cela echoue, term sera lance et une nouvelle tentative sera effectuee, avec la connexion term. Pour etre plus clair, voici un exemple qui utilise la version term de telnet, laquelle peut fonctionner avec ou sans term. telnet localhost n'utilise pas term pour realiser la connexion alors que : telnet zeus.cs.kun.nl utlisera term si vous n'avez pas d'autre type de connexion reseau. Un _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l suppose que l'on mente a propos du nom de la machine locale, en pretendant qu'il s'agit de la machine distante. De plus, cela implique que bind(0) agisse toujours sur la machine distante. Sommairement, cela signifie que de nombreux programmes n'utilisant pas term deviennent inutilisables lorsque term est actif. Malheureusement, c'est le cas de la plupart des programmes et demons UDP. 44..33.. CCoommppiillaattiioonn ddee tteerrmm Si vous avez de la chance, un simple make devrait suffire. Il est cependant probable que vous aurez un peu plus de travail. Du fait des nouvelles possibilites des version recentes de term, la construction de l'executable est desormais un peu compliquee. On peut proceder de plusieurs facons. Afin de detailler toutes ces manieres de construire term, cette section est divisee en trois parties : 1. Compilation de term, versions 2.0.0 et ulterieures. 2. Compilation de term, versions 1.16 a 1.19. 3. Compilation de term, versions 1.15 et anterieures. 44..33..11.. CCoommppiillaattiioonn ddee tteerrmm, versions 2.0.0 et ulterieures Tout d'abord, assurez-vous d'avoir bien lu la partie '_r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l' ci-dessus. Il existe plusieurs facons de compiler l'executable et les clients term des versions 2.0.0 et ulterieures. Toutes peuvent etre utilisees par _r_o_o_t ou par un utilisateur normal : 1. Compilation de term en mode prive sans _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. 2. Compilation de term en mode prive avec _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. 3. Compilation de term en mode partage sans _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. 4. Compilation de term en mode partage avec _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Dans ces versions de term, une nouvelle procedure de compilation est apparue, grace au _s_c_r_i_p_t configure. Lorsque configure est lance, il determine le systeme d'exploitation, si le repertoire source est accessible ou non et si des options d'execution ont ete choisies. En fonction de ce qu'il a trouve, il cree un fichier 'Makefile' a partir du 'Makefile.in' fourni avec term. Deux des plus importantes options a configurer sont --root et --user qui determinent si term doit etre installe par _r_o_o_t ou par un utilisateur classique. D'autres options peuvent etre utilisees pour installer term a votre gout (dans une arborescence non standard, par exemple). 1. Compilation de term en mode prive sans _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Pour installer term de cette facon, vous devez lancer les commandes (que ce soit en tant que _r_o_o_t ou en tant qu'utilisateur ordinaire) : ./configure --root OU --user make install installman Ceci construit les executables, les installe et installe les pages de manuel. 2. Compilation de term en mode prive avec _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Pour installer term de cette facon, vous devez lancer les commandes (que ce soit en tant que _r_o_o_t ou en tant qu'utilisateur ordinaire) : ./configure --root OU --user make installnet installman Ceci construit les executables, les installe et installe les pages de manuel. 3. Compilation de term en mode partage sans _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Pour installer term de cette facon, vous devez lancer les commandes (que ce soit en tant que _r_o_o_t ou en tant qu'utilisateur ordinaire) : ./configure --root OU --user make share installman Ceci construit les executables, les installe et installe les pages de manuel. 4. Compilation de term en mode partage avec _r_e_s_e_a_u _t_e_r_m _i_n_t_e_g_r_a_l. Pour installer term de cette facon, vous devez lancer les commandes (que ce soit en tant que _r_o_o_t ou en tant qu'utilisateur ordinaire) : ./configure --root OU --user make share installnet installman Ceci construit les executables, les installe et installe les pages de manuel. 44..33..22.. CCoommppiillaattiioonn ddee tteerrmm, versions 1.16 a 1.19 Pour installer ces versions de term vous pouvez choisir l'une des procedures suivantes : 1. Compilation de term en mode prive, en tant qu'utilisateur ordinaire. 2. Compilation de term en mode partage, en tant qu'utilisateur ordinaire. 3. Compilation de term en mode prive, en tant que _r_o_o_t. 4. Compilation de term en mode partage, en tant que _r_o_o_t. Comment activer/desactiver les fonctionnalites de partage de term durant la compilation est explique ci-apres. 1. Vous etes un utilisateur ordinaire (pas de compte _r_o_o_t) et vous ne souhaitez PAS partager votre connexion term avec d'autres utilisateurs. Installez term de la facon suivante : make DO=install OS-type make installman Ceci compile puis installe term, ses clients et les pages de manuel. Il vous faut de plus creer un repertoire '$HOME/.term'. C'est le repertoire dans lequel term recherchera son fichier 'termrc'. 2. Vous etes un utilisateur ordinaire (pas de compte _r_o_o_t) et vous souhaitez partager votre connexion term avec d'autres utilisateurs. Installez term de la facon suivante : make DO=installshare USERSHARE=$HOME/term OS-type make installman Ceci compile puis installe term, ses clients et les pages de manuel. Il vous faut de plus creer un repertoire '$HOME/.term' (nom par defaut) avec les droits drwxrwxr-x. Dans ce repertoire, vous trouverez au moins la _s_o_c_k_e_t utilisee par term pour sa connexion ('tmp/pri- vate/socket='). 3. Vous etes _r_o_o_t et vous ne souhaitez PAS partager votre connexion term avec d'autres utilisateurs. Installez term de la facon suivante : make DO=install OS-type make installman Ceci compile puis installe term, ses clients et les pages de manuel. Il vous faut de plus creer un repertoire '/usr/local/lib/term' (nom par defaut) avec les droits drwxrwxr-x. Dans ce repertoire, vous trou- verez au moins la _s_o_c_k_e_t utilisee par term pour sa connexion ('tmp/private/socket='). 4. Vous etes _r_o_o_t et vous souhaitez partager votre connexion term avec d'autres utilisateurs. Tout d'abord, assurez-vous d'avoir lu la partie concernant le partage. Installez term de la facon suivante : make DO=installshare OS-type make installman Ceci compile puis installe term, ses clients et les pages de manuel. Il vous faut de plus creer un repertoire '/usr/local/lib/term' (nom par defaut) dont le proprietaire est le groupe _t_e_r_m, avec les droits drwxrwxr-x. Dans ce repertoire, vous trouverez au moins la _s_o_c_k_e_t utilisee par term pour sa connexion ('tmp/private/socket='). 44..33..33.. CCoommppiillaattiioonn ddee tteerrmm, versions 1.15 et anterieures La compilation de ces versions de term ne devrait pas requerir d'autres commandes que : make DO=install OS-type make installman Ceci compile puis installe term, ses clients et les pages de manuel. Tout est alors pret a l'emploi. Il vous faut de plus creer un repertoire '$HOME/.term'. C'est le repertoire dans lequel term recherchera son fichier 'termrc'. Les seules choses que vous pourrez souhaiter modifier sont certains des chemins du 'Makefile' et certaines options du compilateur. 44..44.. cclliieenntt..aa,, lliibbtteerrmmnneett..aa,, lliibbtteerrmmnneett..ssaa,, lliibbtteerrmmnneett..ssoo Une bibliotheque est fournie avec term. Elle propose des fonctions pour les clients term. Jusqu'a la version 1.16, cette bibliotheque etait nommee client.a. Elles etait batie lors de la compilation de term, puis utilisee lors de celle des clients. Elle n'etait installee dans aucun repertoire. Depuis la version 1.16, cette bibliotheque s'appelle libtermnet.a. Jusqu'a la version 1.19, elle est creee dans le repertoire term, puis utilisee pour la compilation des clients term. Elle n'est installee nulle part ailleurs. A partir de la version 2.0.0, libtermnet.so et libtermnet.sa (bibliotheque partagee et donnees exportees et initialisees pour la bibliotheque) sont egalement creees lors de la compilation de term. Lors de l'installation de l'ensemble des composantes du paquetage, ces trois bibliotheques (libtermnet.a, libtermnet.so et libtermnet.sa) sont installees dans le repertoire '/usr/local/lib' (par defaut). Un lien est ensuite cree de libtermnet.so.2.x.x vers libtermnet.so.2. Finalement, ldconfig est lance pour creer les liens et le cache necessaires (pour le _l_i_n_k_a_g_e a l'execution, par ld.so). ld.so tient compte des versions les plus recentes des bibliotheques trouvees dans les repertoires precises dans la ligne de commande, dans le fichier '/etc/ld.so.conf' et dans les repertoires alors etre utilisees par tous les clients term qui sont construits avec des bibliotheques dynamiques plutot que statiques. Ces bibliotheques peuvent egalement etre utilisees pour le portage de vos propres programmes afin de leur permettre d'utiliser les fonctionnalites de term (voir plus loin). 44..55.. VVaarriiaabblleess dd''eennvviirroonnnneemmeenntt term reconnait un certain nombre de variables d'environnement qui peuvent etre positionnees par les utilisateurs. Les trois premieres a etre detaillees sont : +o termDIR +o termSHARE +o termMODE Grace a ces variables, il vous est possible de controler la facon dont term s'execute. Pour les versions de term 1.15 et anterieures, seule la variable termDIR est importante (ces versions ne proposent pas le mode partage). Pour ces versions, positionnez termDIR de la facon suivante : setenv termDIR $HOME (csh ou tcsh) export termDIR=$HOME (ksh ou bash) A partir de la version 1.16, term reconnait egalement les variables termSHARE et termMODE. Grace a ces variables, on peut indiquer a term s'il doit fonctionner en mode prive ou partage. Comment positionner ces variales pour les modes prive et partage est explique ci-apres. termMODE peut avoir l'une des trois valeurs suivantes : +o 0 = prive +o 1 = partage (systeme) +o 2 = partage (utilisateur) 1. On peut utiliser term en mode prive en positionnant les variables termDIR et termMODE de la facon suivante : En csh ou tcsh : setenv termDIR $HOME setenv termMODE 0 En ksh ou bash : export termDIR=$HOME export termMODE=0 2. Il y a deux manieres de positionner les variables pour utiliser term en mode partage : a. Lorsque term est installe comme un programme _S_U_I_D, seule termMODE doit etre positionnee. setenv termMODE 2 (csh ou tcsh) export termMODE=2 (ksh ou bash) b. Lorsque term est installe comme un programme _S_G_I_D, il faut positionner les variables comme suit : En csh ou tcsh : setenv termMODE 1 setenv termDIR /usr/local/lib/term setenv termSHARE $termDIR En ksh ou bash : export termMODE=1 export termDIR=/usr/local/lib/term export termSHARE=$termDIR Positionner les variables de cette maniere permet d'utiliser les anciens clients (_l_i_n_k_e_s avec une ancienne version de client.a) en mode partage. A partir de la version 2.0.0, term reconnait egalement la variable termSERVER. Celle-ci doit etre positionnee si vous possedez plusieurs modems et utilisez plus d'une connexion a la fois. Pour preciser quelle connexion utiliser, il faut lancer term avec le nom d'un serveur. nohup term -v /dev/modem1 Connection1 & nohup term -v /dev/modem2 Connection2 & Les utilisateurs doivent alors positionner la variable termSERVER sur le nom de la connexion qu'ils souhaitent utiliser : setenv termSERVER Connection1 (csh ou tcsh) export termSERVER=Connection2 (ksh ou bash) 44..66.. TTeesstt ddee tteerrmm Tapez make test (ou make termtest pour les versions recentes de term) afin de compiler le demon de test de term. (term)test fonctionne en executant deux occurences de term sur votre systeme, une copie 'locale' et une copie 'distante'. Chacune d'elles lira votre 'termrc' de facon a ce que vous puissiez en ajuster le comportement. Lancez (term)test maintenant. Vous devriez etre en mesure de lancer un trsh et un tupload. Essayez : tupload ./term /usr/tmp ceci devrait placer une copie de l'executable term dans le repertoire '/usr/tmp'. La sortie du term local apparait dans le fichier 'local.log', celle du term distant dans 'remote.log'. Vous pouvez lancer term avec l'option -d255 de facon a ce que des informations de deboguage soient incluses dans ces fichiers ou pour vous permettre de deboguer votre 'termrc'. NOTE : lancez test par la commande ./test de facon a ne pas lancer le test du systeme. 44..77.. tteerrmm et les programmes de communication Avant de pouvoir utiliser term, il faut avoir etabli une connexion par modem, par l'intermediaire d'un programme de communication tel que kermit ou seyon. La documentation de votre programme de communication vous fournira les informations dont vous aurez besoin pour vous connecter a une machine distante. Lorsque vous avez etabli la connexion avec la machine distante, il vous faut interrompre ou quitter votre programme de communication pour pouvoir utiliser term, mais sans couper la connexion. Ceci est necessaire pour eviter que le programme de communication subtilise des caracteres a linecheck ou term. Comment s'assurer que la connexion reste active et que le programme de communication ne s'approprie pas certains caracteres est explique ci- apres, pour quelques exemples. 44..77..11.. kkeerrmmiitt Il est facile de lancer term lorsque vous utilisez kermit : a l'invite de kermit, tapez la commande suspend. Vous voila de retour a l'invite de Linux. A partir de la, vous pouvez etablir votre connexion term. 44..77..22.. sseeyyoonn Un moyen facile de lancer linecheck ou term a partir de seyon est de les placer dans le menu _T_r_a_n_s_f_e_r (controle par le fichier '$HOME/.seyon/protocols'). Dans le fichier '$HOME/.seyon/protocols', ajoutez : "linecheck" "$cd /tmp; linecheck" "term" "$term -c off -w 10 -t 150 -s 38400 -l $HOME/tlog" Ainsi, lorsque vous voulez lancer linecheck ou term sur la machine locale, vous pouvez selectionner le menu _T_r_a_n_s_f_e_r, choisir l'option _l_i_n_e_c_h_e_c_k ou _t_e_r_m, puis _G_o. Bien entendu, il est toujours possible d'utiliser le bouton _s_h_e_l_l _c_o_m_m_a_n_d et de taper 'linecheck' ou 'term' dans la boite de dialogue _p_o_p_-_u_p. Ceci redirige automatiquement l'entree et la sortie. 44..88.. RReennddoonnss llaa lliiaaiissoonn ttrraannssppaarreennttee Supposons que vous savez etablir une connexion modem entre vos machines locale et distante. De facon typique, vous numerotez grace a un serveur de terminal quelconque pour vous connecter a la machine distante. Vous utilisez egalement quelque logiciel d'emulation de terminal, tel que kermit ou seyon pour dialoguer avec votre modem (les exemples fournis dans ce document utilisent kermit, puisque c'est ce dont l'auteur se sert). Si vous avez des problemes avec votre modem ou avec votre logiciel de terminal, reportez-vous au Serial-HOWTO, il devrait vous permettre de les regler. Une fois votre liaison etablie, il faut la rendre aussi transparente que possible. Etudiez les commandes de votre serveur de terminal (_h_e_l_p ou _? sont en general un bon debut). Choisissez les options 8 bits chaque fois que cela est possible. Il est possible que cela influe sur la facon de vous connecter a un systeme. Si le serveur utilise rlogin, par exemple, il faudra peut-etre utiliser l'option -8 afin de le rendre transparent. Faites particulierement attention a ne pas utiliser le controle de flux XON/XOFF. Essayez plutot d'utiliser le controle de flux RTS/CTS (_h_a_r_d_w_a_r_e). L'etude de la documentation de votre modem vous apprendra certainement comment le configurer pour des communications RTS/CTS 8 bits. 44..99.. LLaannccoonnss lliinneecchheecckk AATTTTEENNTTIIOONN :: dans certains documents, les options de linecheck sont donnees dans un ordre incorrect. L'auteur les a controlees et en donne ici l'ordre correct. NNOOTTEE :: a partir de la version 2.3.0, il n'est plus necessaire de fournir a linecheck le nom d'un fichier de _l_o_g. La sortie sera ecrite dans le fichier 'linecheck.log', dans le repertoire d'ou linecheck a ete lance. linecheck est un programme fourni avec term qui verifie la transparence d'une liaison et fournit des informations utiles pour une configuration correcte de term. linecheck envoie chacun des 256 caracteres 8 bits possibles sur la liaison et verifie que tous ont ete transmis correctement. Il faut indiquer a term quels caracteres ne peuvent pas etre transmis sur la liaison, ce que linecheck permet de reperer. linecheck doit etre utilise une fois que la liaison modem est aussi transparente que possible. Pour lancer linecheck, procedez comme suit : 1. Sur le systeme distant, lancez : linecheck linecheck.log 2. Revenez a votre systeme local et interrompez votre programme de communication (voir au-dessus). 3. Sur le systeme local, lancez : linecheck linecheck.log > /dev/modem < /dev/modem Lorsque linecheck est termine, les fichiers 'linecheck.log' contiennent un ensemble de nombres, places a la fin. Ce sont les caracteres qui doivent etre _e_v_i_t_e_s dans le exemple, le 'linecheck.log' local ne disait rien et le 'linecheck.log' distant indiquait d'_e_v_i_t_e_r 29 et 157. C'est pourquoi son 'termrc' local _e_v_i_t_e ces caracteres, alors que son 'termrc' distant n'en _e_v_i_t_e aucun. Si l'on _e_v_i_t_e des caracteres d'un cote, il faut les _i_g_n_o_r_e_r de l'autre. C'est pourquoi, l'auteur doit _i_g_n_o_r_e_r 29 et 157 sur son systeme distant. Si linecheck se plante, essayez : linecheck linecheck.log 17 19 sur le systeme distant et : linecheck linecheck.log 17 19 > /dev/modem < /dev/modem sur le systeme local. Ceci a pour effet de ne pas envoyer les caracteres de controle de flux XON/XOFF qui plantent votre ligne si vous utilisez un controle de flux logiciel. Si cela resoud le probleme, _e_v_i_t_e_z_/_i_g_n_o_r_e_z 17 et 19 dans les deux 'termrc'. Si votre serveur de terminal est sensible a d'autres caracteres, procedez de meme. Il est possible d'identifier de tels caracteres lorsque linecheck se plante : tuez-le puis examinez les fichiers de _l_o_g. Les derniers caracteres transmsis sont de bons coupables potentiels. Essayez a nouveau en _e_v_i_t_a_n_t ces caracteres. En resume, le 'termrc' local de l'auteur se presente ainsi : escape 29 escape 157 et son 'termrc' distant ainsi : ignore 29 ignore 157 puisque le 'linecheck.log' _d_i_s_t_a_n_t indiquait _d_'_e_v_i_t_e_r 29 et 157. 44..1100.. EEssssaayyoonnss ddee llaanncceerr tteerrmm Connectez-vous au systeme distant et rendez la liaison aussi transparente que possible (si ca n'est deja fait). Lancez-y term, par exemple de la facon suivante : exec term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150 Examinons une a une les options de cette ligne de commande (que nous aurions tout aussi bien pu inclure dans le exec signifie que le programme (term, en l'occurence) remplace le _s_h_e_l_l a partir duquel il est lance. On utilise exec lorsque l'on n'a plus l'intention de se servir du _s_h_e_l_l concerne; on economise ainsi la memoire. Cependant, lors de la mise au point de la liaison, il peut etre prudent de ne pas faire un exec, de facon a pouvoir tuer le term distant. L'option -r doit etre utilisee a une et une seule extremite. Celle-ci sera alors vue par term comme l'extremite distante de la liaison (qui peut donc etre votre machine locale). Si cette option n'est pas utilisee d'un cote ou de l'autre, term se plantera spontanement. -l $HOME/tlog permet de consigner toutes les erreurs dans le fichier 'tlog', place dans votre repertoire utilisateur. Celui-ci etant tres utile pour les mises au point, il n'y a pas de raison de ne pas utiliser cette option. -s 38400 : l'auteur dispose d'un modem 14400 _b_p_s, avec compression. Afin d'obtenir des taux de compression optimaux, il faut envoyer les bits aussi vite que possible. Pour un modem plus lent, il faut utiliser une valeur plus faible. Notez que si vous possedez une machine "lente" dotee de ports series disposant d'UART 16450, des valeurs de _b_p_s trop importantes risquent de provoquer des pertes de donnees en surchargeant le port serie. term est capable de corriger ceci, mais si les fichiers de _l_o_g comportent de nombreux messages d'erreur (ou si vous recevez de nombreux _w_a_r_n_i_n_g_s des noyaux linux 0.99pl15 ou plus recents), il serait plus sage de diminuer cette valeur. -c off : cette option desactive la compression. Lorsque l'on dispose d'un modem qui assure deja la compression des donnees, il n'est nul besoin de les compresser une seconde fois. -w 10 -t 150 : ici encore, cette option permet d'optimiser une liaison modem rapide. La valeur de la fenetre est 10 et celle du _t_i_m_e_o_u_t 150, selon les recommendations de la page de manuel de term_setup. Revenez sur votre machine locale et interrompez votre programme de communication (voir ci-dessus). Il est preferable qu'il ne tourne pas en meme temps que term, car il risque d'entrer en conflit avec lui au niveau du port serie. Si vous parvenez a convaincre votre programme de communication de ne pas raccrocher la ligne lorsque vous en sortez, vous pouvez le quitter. Il faut maintenant lancer le term local : term -c off -l $HOME/tlog -s 38400 -w 10 -t 150 < /dev/modem > /dev/modem & Il faut indiquer a term ou se trouve le modem. C'est pourquoi a la fois l'entree et la sortie standards sont redirigees vers '/dev/modem' (c'est le role de < et >). Enfin, la commande est lancee en arriere- plan, de facon a pouvoir continuer a utiliser le terminal pour autre chose, si on le souhaite. term devrait maintenant fonctionner :-). Essayez un trsh et regardez ce qui se produit. Si cela plante ou si votre liaison semble excessivement lente, jetez un coup d'oeil aux fichiers 'tlog' places a chaque extremite. Contiennent-ils des _t_i_m_e_o_u_t_s ou des messages d'erreur ? Si c'est le cas, quelque chose ne va pas dans votre configuration. Essayez a nouveau (apres avoir fini de lire ceci :-)). Notez qu'il est normal que la connexion ne semble pas rapide comme l'eclair, surtout si vous utilisez la compression. Les meilleures performances sont obtenues lors d'echanges tels que le transfert de fichiers. 44..1111.. MMeettttrree ffiinn aa uunnee ccoonnnneexxiioonn tteerrmm Il est probable qu'apres avoir effectue un certain nombre de travaux, vous souhaiterez mettre fin a votre connexion term. Ceci peut etre fait de quatre facons : 1. Tuer les programmes term a chaque extremite de la liaison. C'est la methode la moins recommandee. 2. Une methode un peu plus elegante est de taper la commande suivante sur la machine locale : echo '00000' > /dev/modem Ceci devrait mettre fin a votre connexion term proprement. Cette meth- ode fonctionne avec toutes les versions de term. Assurez vous que la suite de zeros en contient bien au moins _c_i_n_q. 3. Dans le 'termrc' des versions de term 2.0.0 et ulterieures, vous pouvez ajouter une entree terminate ''. Ceci indique la chaine qu'utilisera term pour s'interrompre ('00000' par defaut). Elle doit etre longue d'au moins cinq caracteres afin d'eviter toute terminaison intempestive. 4. A partir de la version 1.14, un programme tshutdown est fourni (en fait, il s'agit d'un _p_a_t_c_h pour la version 1.14 et est dans le paquetage pour les versions plus recentes). tshutdown permet de mettre fin proprement a votre connexion term. 44..1122.. EEffffaacceerr tteerrmm Bien, vous l'aurez voulu ! Puisque certains d'entre vous veulent se debarasser de term, nous indiquons ici les etapes a suivre. +o Effacez les repertoires et leur contenu. Suivant la facon dont vous avez installe term, un ou plusieurs des repertoires suivants est present sur votre machine : $HOME/.term/termrc $HOME/.term/termrc. $HOME/term/termrc $HOME/term/termrc. /usr/local/lib/term/termrc /usr/local/lib/term/termrc. /etc/termrc /etc/termrc. Vous pouvez effacer simultanement ces repertoires et leur contenu. Pour ce faire, utilisez la commande rm -rf. +o Dans certains cas, vous avez cree un groupe _t_e_r_m lors de l'installation. Verifiez le fichier +o Il faut maintenant effacer le paquetage term ainsi que tous les executables modifies pour term. C'est la partie la plus delicate. Les executables du paquetage de term doivent normalement se trouver dans le repertoire '/usr/local/bin' ou le repertoire '$HOME/bin'. En ce qui concerne les executables que vous avez modifies vous-meme pour une utilisation avec term, c'est a vous de voir, nous ne pouvons pas vous aider. Pensez egalement a effacer les fichiers de configuration ou autres qui correspondent a ces programmes. +o Pour effacer les bibliotheques, lancez les commandes suivantes : cd / find . -name 'libtermnet*' -exec /bin/rm {} Ceci localisera et effacera les bibliotheques. +o Pour effacer le fichier 'termnet.h', le plus simple est de taper : cd / find . -name termnet.h -exec /bin/rm {} +o Si vous avez installe les pages de manuel de term, elles doivent se trouver dans l'un des repertoires suivants : /usr/local/man/man1 /usr/local/man/cat1 $HOME/man/man1 $HOME/man/cat1 Il vous faut au minimum controler la presence des pages de manuel suivantes : term, term_clients, term_setup, tdownload, linecheck, trdate, trdated, termrc, termtest, tmon, tredir, trsh, tshutdown, tudpredir, tupload, txconn et finalement tiptest. +o Effacez le repertoire utilisateur temporaire et son contenu. Il s'agit du repertoire Une fois ce petit exercice termine, vous pouvez etre quasiment certain d'avoir efface tout ce qui concerne term. 44..1133.. OOppttiimmiissaattiioonn ddee llaa lliiaaiissoonn Une fois que vous avez reussi a faire fonctionner term, pourquoi ne pas essayer d'optimiser un peu les choses ? Un bon moyen de mesurer la vitesse de transmission de votre liaison est de lancer tmon dans une fenetre tout en telechargeant un fichier dans une autre. Essayez avec de gros fichiers de texte et avec des fichiers compresses. Les fichiers textes devraient etre transferes environ deux fois plus vite que les fichiers compresses. Les parametres sur lesquels vous pouvez jouer sont les _b_p_s (-- (N.D.T.) Le document original parle de _b_a_u_d, mais il s'agit d'une erreur commune :-)--) (-s), la compression (-c), la taille de fenetre (-w), les _t_i_m_e_o_u_t_s (-t) et le recyclage (-A). Attention au parametre de recyclage. Avec term version 1.19, l'auteur a obtenu une perte de 80% a 90% lorsqu'il a utilise ce parametre. Peut-etre est-ce une bogue de la version 1.19 et n'est-ce valable que pour cette version. bps : il s'agit du nombre maximal de bits que term tentera d'envoyer sur la liaison serie. term evitera d'envoyer des caracteres plus rapidement. Par defaut, utilisez la vitesse des ports serie de votre ordinateur, mais soyez conscient que cela risque d'etre trop rapide si votre modem fonctionne a une vitesse plus faible sur la ligne telephonique. Cette option est prevue pour les systemes qui placent les donnees dans un tampon. Lors de l'installation et de la mise au point, il est conseille d'utiliser des valeurs faibles plutot que des valeurs trop importantes. Pour des liaisons a haute vitesse (> 38400), il peut etre avantageux de ne pas imposer de limite en utilisant la valeur 'off'. term ne s'appuiera alors que sur le noyau pour effectuer le controle de flux. Compression : a utiliser si votre modem n'effectue pas lui-meme la compression. S'il la fournit, desactivez cette option afin de ne pas compresser deux fois les memes donnees, ce qui _a_u_g_m_e_n_t_e a coup sur le volume de donnees transmis. Les modems assurant la compression sont ceux qui utilisent les protocoles MNP-5 ou V42.bis. Consultez la documentation de votre modem et les messages qu'il envoie lors d'une connexion. Fenetre : c'est le nombre de paquets de donnees que term accepte d'envoyer sur la liaison avant de recevoir un acquittement de la part du term distant. Avec un modem rapide, il peut etre avantageux d'augmenter ce parametre. Pour les liaisons plus lentes, cela risque de surcharger l'extremite distante. Timeout : il s'agit de la duree pendant laquelle term attend un acquittement. Si vous avez augmente la taille de la fenetre et obtenez de nombreux _t_i_m_e_o_u_t_s dans vos fichiers de _l_o_g, essayez d'augmenter ce parametre. Pour un modem 14400/V42.bis, l'auteur utilise -c off -w 10 -t 150 et obtient environ 1700 _c_p_s pour les fichiers compresses et 3500 _c_p_s pour les fichiers texte, les transfert etant effectues avec tupload. 44..1144.. PPrroobblleemmeess ccllaassssiiqquueess Dans cette partie sont exposees quelques demarches classiques a suivre lorsque l'utilisation de term ou de l'un de ses clients vous pose probleme. +o Avez-vous bien nettoye l'arborescence de term ? L'apparition de nouvelles versions de term est allee de pair avec de nombreuses modifications de l'arborescence '/usr/local/lib/term'. Si vous n'etes pas conscient de cela, vous risquez de voir apparaitre de nombreux messages d'erreur. Le mieux dans ce cas est d'effacer l'arborescence '/usr/local/lib/term' (en prenant soin de sauvegarder votre 'termrc') et d'installer ensuite votre nouvelle version de term. Ainsi, vous devriez eviter de vous creer des problemes avec une arborescence inadequate. +o Avez-vous efface les vieilles _s_o_c_k_e_t_s ? Lors de la mise a jour de term, effacez toutes les _s_o_c_k_e_t_s (appelees 'socket=') creees par term. Ne pas le faire vous expose a d'etranges problemes. Afin de determiner a l'ecoute de quelle _s_o_c_k_e_t se trouve term, vous pouvez utiliser le programme netstat. +o term ne se compile pas corectement sous SunOS 4.1.3 ? C'est que vous avez probablement configure term avec ./configure --user. Lors de la compilation, vous voyez apparaitre une erreur d'assembleur a propos d'une option '-k'. La cause de cette erreur est inconnue. La solution est de configurer term avec des bibliotheques statiques. Il vous faut donc utiliser ./configure --user --static et continuer la compilation de facon normale. Tout devrait alors se derouler normalement. +o termtest vous donne une erreur : 'term: failed to connect to term socket '/root/.term/sockettest'' ? Lorsqu'il est lance, termtest s'attend a trouver l'executable term dans le repertoire ou il est lui-meme. Lorsque vous faites un make install avant de lancer termtest, l'executable term est deplace dans '/usr/local/bin' (ou dans un autre repertoire d'executables). La solution consiste a creer un lien vers l'executable dans le repertoire source : ln -s /usr/local/bin/term /usr/src/term-/term +o Lancez-vous bien le bon executable ? term a ete mis a jour a de nombreuses reprises et bon nombre de systemes en possedent differentes versions. Assurez-vous d'utiliser la bonne version. Notez que cela s'applique egalement a linecheck. Vous pouvez utiliser la commande type -a de bash ou bien la commande whereis pour determiner quel est le programme qui est execute. Les versions de term posterieures a la 1.11 affichent normalement leur numero de version au demarrage (bien que la 1.14 pretende n'etre que la 1.12. Et oui !). +o Avez-vous mis le bon 'termrc' au bon endroit ? Suivant les versions de term que vous utilisez et la facon dont vous l'avez installe (en tant que _r_o_o_t ou en tant qu'utilisateur), ce fichier peut se trouver dans l'un des repertoires suivants : $HOME/.term/termrc $HOME/.term/termrc. $HOME/term/termrc $HOME/term/termrc. /usr/local/lib/term/termrc /usr/local/lib/term/termrc. /etc/termrc /etc/termrc. Certains systemes sont fournis avec des fichiers 'termrc' pre- installes. Assurez-vous de les avoir detruit avant de proceder a l'installation. Si vous faites l'installation en tant que _r_o_o_t, veri- fiez '/.term'. Lors de son execution, term cree des fichiers (qui sont en fait des _s_o_c_k_e_t_s). C'est pourquoi il possede son propre repertoire '$HOME/.term' dans lequel est place le fichier 'termrc' (notez qu'il n'y a PAS de . devant 'termrc' !). +o term trouve-t-il son fichier 'termrc' ? Lorsque vous lancez term des deux cotes, vous devriez voir des messages tels que : term version: 2.2.9 Reading file: /usr/local/lib/term/termrc Using shared mode. Si la seconde ligne n'apparait pas, c'est que term ne trouve pas le fichier 'termrc' et vous pouvez etre sur que quelque chose ne s'est pas deroule normalement lors de l'installation (sauf si vous n'utilisez pas de fichier 'termrc' et entrez tous les parametres dans la ligne de commande :-)). Verifier la localisation et les droits du fichier 'termrc' sur le systeme ou term ne le trouve pas. +o term ou votre repertoire '.term' est-il monte par NFS ? Si tel est le cas, il faut utiliser l'option -Dterm_NFS_DIR dans la ligne CFLAGS du 'Makefile'. Malheureusement, en ce qui concerne l'auteur, ce parametre provoque une erreur de compilation lorsque term 1.19 est compile sur une machine sous SunOS 4.*. +o Tous les fichiers et repertoires ont-ils les bons proprietaires et des droits adequats ? Cela ne devrait pas etre un probleme dans la mesure ou les proprietaires et les droits sont determines lors de l'installation. Neanmoins, soyez conscient de ce fait si vous effectuez le portage pour term de vos propres applications. Si de plus vous modifier le mode d'execution de term (c'est-a-dire du mode _p_r_i_v_e vers le mode _p_a_r_t_a_g_e), il faut changer en consequence les proprietaires et les droits des fichiers. +o Si vous obtenez une erreur gethostbyname: : Non- authoritative `host not found', ou server failed, il vous faut verifier les points suivants : 1. Le fichier '/etc/hosts' est-il configure correctement ? Si n'est pas le nom de votre machine (les vieilles distributions _S_L_S et les distributions _S_l_a_c_k_w_a_r_e sont fournies avec telle que : # Local Hosts Format: # IP_NUMBER HOSTNAME ALIASES # # Here is the name of your host, first, followed by any aliases 127.0.0.1 localhost linuxpc.domain linuxpc 2. Vos fichiers '/etc/rc*' et '/etc/resolv.conf' sont-ils lisibles (chmod ugo+r) ? 3. Verifez enfin que vous avez installe l'interface TCP/IP loopback sur votre machine. +o Les fichiers de _l_o_g de term sont remplis de messages 'timed out' de tous types ? Cela signifie que votre connexion n'est pas optimisee. Quelques messages de ce type de temps en temps ne posent guere de probleme. Ils sont sans doute dus a des facteurs temporels influant sur la qualite de la connexion physique entre vos machines locale et distante. Si, en revanche, le nombre de ces messages est tres eleve, votre connexion sera fortement ralentie. Il vous faut alors jouer sur les parametres presentes dans la partie '_O_p_t_i_m_i_s_a_t_i_o_n _d_e _l_a _l_i_a_i_s_o_n'. C'est malheureusement la partie la plus experimentale de l'installation. Aucune regle definitive concernant les valeurs des parametres ne peut etre donnee, tant les facteurs susceptibles d'influencer la qualite de la connexion sont nombreux. Ces facteurs varient d'une connexion a l'autre et meme d'un moment a l'autre pour une meme connexion. +o Un ftp normal avec des ports rediriges ne fonctionne pas chez vous ? C'est un probleme connu : la redirection des ports requis par ftp (les ports 20 et 21) ne permet pas a ftp de fonctionner. La seule solution est de recuperer un ftp modifie pour fonctionner avec term. Malheureusement, meme de telles versions de ftp semblent ne pas fonctionner. 55.. LLeess cclliieennttss tteerrmm Un certain nombre d'utilitaires sont fournis dans le paquetage term, en particulier : trsh, tmon, tupload, tredir, txconn et, dans les versions les plus recentes, trdate et trdated. De plus, depuis la version 2.1.0, tdownload s'est ajoute a cette liste. Cette partie traite de trsh, tmon, tupload, tdownload, trdate et trdated. Les autres clients sont decrits dans des parties qui leur sont propres. Aucun client term ne peut fonctionner tant que vous n'avez pas mis en route une liaison term. tmon est un utilitaire simple qui vous permet de surveiller les performances de votre liaison. Il imprime un histogramme des caracteres envoyes et recus. On le lance par la simple commande tmon. Attention, les versions 1.11 et ulterieures comportent une bogue qui tronque certaines donnees. trsh est similaire a rsh. Sans argument, il lance un _s_h_e_l_l interactif sur le systeme distant (autrement dit, il vous y loge). trsh est un des moyens de base pour acceder a l'extremite distante de la liaison term. Si un argument est passe, celui-ci est execute comme commande sur le systeme distant. Par exemple : trsh ls renvoie la liste des fichiers de votre repertoire utilisateur ($HOME) sur le systeme distant. tupload transfere un fichier dont le nom est passe en argument d'une extremite a l'autre de la liaison. Par defaut, ce fichier est place dans le repertoire d'ou vous avez lance term (de l'autre cote de la liaison). Pour placer les fichiers dans un autre repertoire, donnez son nom comme second argument. Par exemple, si vous souhaitez copier le fichier 'term114.tar.gz' dans le repertoire tupload term114.tar.gz /usr/tmp Lorsque vous utilisez tupload, vous avez a votre disposition des _j_o_k_e_r_s comme, par exemple, dans la commande 'tupload a.*'. Le _s_h_e_l_l se charge d'effectuer les correspondances et la commande effectivement executee est 'tupload a.1 a.2 ......'. tdownload permet le transfert d'un fichier dont le nom est passe en argument de la machine distante vers la machine locale. Par defaut, les fichiers seront places dans le repertoire duquel vous avez lance term sur la machine locale. Pour placer les fichiers dans un autre repertoire, passez son nom comme second argument a tdownload. Par exemple, si vous souhaitez copier le fichier 'term114.tar.gz' dans '/usr/tmp' sur la machine locale, tapez : tdownload term114.tar.gz /usr/tmp Il n'est PAS possible d'utiliser les _j_o_k_e_r_s avec tdownload pour la simple raison que le repertoire distant n'est pas accessible au _s_h_e_l_l et que toute expansion de _j_o_k_e_r_s se refere au repertoire courant sur la machine locale (ou est execute le _s_h_e_l_l). trdate est un utilitaire qui lit l'heure sur la machine distante et la modifie en consequence sur la machine locale. Il doit etre execute en tant que _r_o_o_t. trdated est la version demon de trdate. Lorsqu'il est lance dans 'rc.local', il est execute comme un demon et met l'heure a jour toues les 5 minutes (par defaut). trdated fonctionne meme si aucune connexion term n'est active; il commence a modifier l'heure des que la connexion est effectivement etablie. 66.. XX eett tteerrmm term permet a plusieurs utilisateurs d'ouvrir des fenetres _X _w_i_n_d_o_w_s sur la machine locale, a partir de clients s'executant sur une machine du reseau. C'est le role de txconn, qui est lance sur le systeme distant par la simple commande txconn. Il se place en arriere-plan et renvoie un nombre sur la sortie standard. Ce nombre est le numero de _d_i_s_p_l_a_y que doivent utiliser les clients pour acceder au serveur X de la machine locale. Voici un exemple qui devrait clarifier les choses. Nous sommes connectes via trsh a l'hote term distant, nomme toto. Sur toto, nous lancons les commandes suivantes : toto$ txconn Xconn bound to screen 10 :10 toto$ Desormais, sur chaque hote dont nous voulons qu'il execute un client X et envoie l'affichage sur la machine locale, il suffit de faire : setenv DISPLAY toto:10 (en bash utiliser export DISPLAY=toto:10). Dans certains cas, il sera de plus necessaire de faire un : xhost + toto ou meme un : xhost + sur la machine locale. Maintenant, a chaque fois que nous demarrons un client, il tente de se connecter au _d_i_s_p_l_a_y 10 de la machine toto. Comme txconn est a l'ecoute de ce _d_i_s_p_l_a_y et retransmet tous les paquets du protocole X vers le serveur X de la machine locale, via term, la fenetre s'ouvrira sur la machine locale. Il est egalement possible de faire le contraire, a savoir de lancer un client sur la machine locale et d'envoyer l'affichage sur la machine distante. Nous ne detaillerons cependant cette procedure qu'apres avoir presente tredir. Le protocole X n'est pas particulierement efficace et gaspille une grande largeur de bande. C'est rarement un probleme dans le cas d'un reseau _e_t_h_e_r_n_e_t, mais cela devient desastreux pour une liaison par modem. Il parait que X11R6 met en place une version a faible largeur de bande du protocole, LBX. Si cependant vous utilisez X11R5, vous pouvez avoir recours a un utilitaire appele sxpc qui compresse le protocole X et ameliore ainsi les temps de reponse lors de l'utilisation de liaisons series. Le paquetage sxpc contient un article sur son fonctionnement avec term et en est d'autant plus recommande. 77.. ttrreeddiirr tredir est l'un des utilitaires les plus puissants parmi ceux fournis avec term. Il permet d'utiliser avec term les plus importants services reseau. Avant d'en expliquer l'usage, il est necessaire de donner quelques bases sur le fonctionnement de ces services. Nous les avons deja evoques, mais sans expliquer precisement en quoi ils consistent. Comme leur nom l'indique, ce sont des services qui sont fournis par le reseau. Des exemples de tels services sont : telnet qui permet de se _l_o_g_e_r sur une machine a partir d'une autre, le protocole de transfert de fichiers ftp qui permet l'envoi de fichiers entre machines et smtp (_S_i_m_p_l_e _M_a_i_l _T_r_a_n_s_f_e_r _P_r_o_t_o_c_o_l) qui est sollicite a chaque fois que vous envoyez du courrier electronique. Chaque service reseau est associe a un numero de port. L'affectation des numeros de ports aux differents services est donnee par le fichier '/etc/services' qui doit etre identique sur toutes les machines reliees a un meme reseau. Comment ces services sont-ils appeles ? Sur chaque machine du reseau tourne un demon nomme inetd qui est a l'ecoute des tentatives de connexion sur les ports reseau. Ces tentatives proviennent soit du reseau, soit de la machine locale. On obtient un service reseau donne en se connectant au port inetd adequat. Lorsqu'une requete de service reseau est envoyee, inetd sait exactement quel service est demande grace au numero du port sollicite. S'il est configure pour, il fournit alors le service adapte a la connexion qui le demande. La configuration d'inetd est donnee par le fichier '/etc/inetd.conf' qui contient la liste des services fournis. Pour plus d'informations, reportez-vous aux pages de manuel d'inetd et inetd.conf. Il est possible de communiquer directement avec les services reseau en utilisant telnet (et non termtelnet ). Par exemple, pour dialoguer avec le demon sendmail (smtp) de la machine nom_de_la_machine, vous pouvez utiliser telnet nom_de_la_machine smtp ou bien telnet nom_de_la_machine 25 (puisque 25 est le numero de port affecte a smtp dans '/etc/services'). Vous devriez alors recevoir un gentil message de bienvenue de la part du demon de la machine distante. C'est une astuce tres utile pour resoudre les problemes reseau et controler les ports rediriges par tredir (voir ci-apres). tredir fonctionne de facon tres similaire a inetd. Il s'execute en arriere-plan comme un demon et est a l'ecoute des differents ports, dans l'attente d'une requete. Lors qu'une demande de service est faite, plutot que de fournir ce service comme le fait inetd, tredir retransmet la requete au term distant qui transmet la requete au reseau et renvoie le resultat a la machine locale. tredir peut envoyer la requete a n'importe quelle machine du reseau, mais la dirige par defaut vers la machine placee a l'autre extremite de la liaison term. tredir REDIRige les services reseau TCP (_T_r_a_n_s_i_m_s_s_i_o_n _C_o_n_t_r_o_l _P_r_o_t_o_c_o_l). La syntaxe classique de tredir est la suivante : tredir [cet_ordinateur_ci:]port [cet_ordinateur_la:] port Un exemple devrait clarifier tout ceci. Redirigeons un port local sur le port telnet de la machine distante. Pour ce faire, nous utilisons : tredir 2023 23 Maintenant, quiconque se connecte au port 2023 de la machine locale sera redirige vers le port 23 (telnet) de la machine distante. Voici un exemple de session ou la machine locale est ma_machine.modem.maison et la machine distante se nomme netsun. $ tredir 2023 23 Redirecting 2023 to 23 $ telnet localhost 2023 Trying 127.0.0.1... Connected to ma_machine.modem.maison Escape character is '^]'. SunOS UNIX (netsun) login: Cet exemple est particulierement utile. Si nous avions fait le tredir sur netsun, nous pourrions alors faire un telnet vers ma_machine depuis le reseau, simplement en nous connectant au port redirige de netsun, _i_._e_. telnet netsun 2023. Le principe general de l'utilisation de tredir est de rediriger le service souhaite vers une machine du reseau. L'exemple suivant nous permet de lire les _n_e_w_s sur la machine locale a partir d'un serveur de _n_e_w_s du reseau, en utilisant la liaison term. Les _n_e_w_s sont fournies par le service nntp dont le numero de port est le 119. Tout lecteur de _n_e_w_s digne de ce nom vous permet de specifier le numero de port a utiliser, grace a un fichier de configuration ou une variable d'environnement. Donnons a ce port local le numero 2119 et supposons maintenant que notre serveur de _n_e_w_s est news.domain.org. Nous allons rediriger le port 2119 vers le port 119 de news.domain.org, puis nous indiquerons a notre lecteur de _n_e_w_s que le serveur nntp se trouve sur le port 2119 de la machine locale. Etant donne que cela depend du lecteur de _n_e_w_s utilise, nous allons juste tester la liaison avec telnet plutot que de vraiment lancer un tel programme. $ tredir 2119 news.domain.org:119 Redirecting 2199 to news.domain.org:119 $ telnet localhost 2119 Trying 127.0.0.1... Connected to ma_machine.modem.maison. Escape character is '^]'. 200 news.domain.org InterNetNews NNRP Server INN 1.4 07-Dec-41 ready (posting ok). Si vous parvenez jusqu'ici, tout ce qu'il vous reste a faire est de configurer votre lecteur de _n_e_w_s pour etre capable de lire les _n_e_w_s via term. N.B. : si vous lisez les _n_e_w_s de cette facon, soyez certain que dans tous vos envois, vous specifiez dans la ligne d'en-tete Reply-To: une adresse _e_m_a_i_l du reseau a laquelle on peut vous joindre, sinon les gens qui voudront vous contacter enverront leur courrier a l'adresse (fantaisiste) constituee des donnees quelconques que votre lecteur de _n_e_w_s placera dans la ligne d'en-tete From:. 77..11.. ttrreeddiirr : Attention, chien mechant ! Le lecteur astucieux, apres avoir lu le dernier exemple, se demandera certainement pourquoi le port 2119 a ete redirige vers le port 119. Etant donne que les programmes de lecture de _n_e_w_s utilisent par defaut le port 119, pourquoi ne pas faire un tredir 119 news.domain.org:119 et eviter la configuration du lecteur ? La reponse est que tous les ports de numero inferieur a 1024 sont des ports _r_e_s_e_r_v_e_s, a l'ecoute desquels seuls un super-utilisateur peut se mettre. Si vous prenez le risque de _s_u_i_d_e_r tredir ou si vous le lancez en tant que _r_o_o_t, vous pourrez alors rediriger les ports reserves et eviter de vous casser les pieds avec les services restants. Un autre inconvenient de l'utilisation des ports reserves est qu'inetd les ecoute frequemment et qu'un port ne peut etre ecoute que par un seul programme a la fois. Afin d'utiliser un tel port, il vous faut modifier le fichier inetd.conf de facon qu'inetd ne soit plus a l'ecoute du port que vous souhaitez rediriger. Pour ce faire, commentez la ligne du service incrimine, en placant un # au debut de cette ligne. Le super-utilisateur doit alors envoyer un signal HUP a inetd pour qu'il relise son fichier de configuration. 77..22.. QQuueellqquueess aassttuucceess ttrreeddiirr Dans cette partie, nous allons presenter quelques-unes des utilisations les plus courantes de tredir. Nous avons deja indique comment rediriger les services nntp et telnet et allons maintenant passer a des exemples un peu plus compliques. 77..22..11.. XX WWiinnddoowwss Dans une precedente partie, nous avons explique comment permettre a un client s'executant sur le reseau d'ouvrir une fenetre sur la machine locale, grace a txconn. La meme technique peut etre utilisee sur votre machine locale pour qu'un client envoie son affichage vers l'autre extremite de la liaison term. Mais comment afficher un client X sur une machine qui n'est pas l'autre bout de la liaison ? La reponse reside dans la connaissance du fait qu'X utilise un service reseau particulier, a l'instar des autres programmes que nous avons evoques. Un serveur X est a l'ecoute de requetes reseau sur un port dont le numero est donne par la formule : port = 6000 + numero de display. Par exemple, un serveur X gerant le _d_i_s_p_l_a_y 0 sur une machine donnee sera a l'ecoute du port 6000. S'il gere le _d_i_s_p_l_a_y 2, il ecoutera le port 6002. Lorsque vous positionnez votre variable d'environnement DISPLAY sur machine:n, vos clients X tenteront de se connecter au port 6000 + n de machine. Nous pouvons utiliser cette astuce pour permettre a des clients X de votre machine locale d'ouvrir des fenetres sur des _d_i_s_p_l_a_y_s distants. Supposons que nous voulons lancer un xterm tournant sur la machine locale avec l'affichage sur le _d_i_s_p_l_a_y 0 de la machine xmachine, qui est quelque part sur le reseau. Premierement, choisissons un numero de display : 2, par exemple (n'utilisez pas 0, c'est celui que votre serveur X local utilise). Faisons-en le _d_i_s_p_l_a_y 0 de xmachine. En termes de ports, cela signifie qu'il nous faut rediriger le port local 6002 vers le port distant 6000. Les commandes sont les suivantes : $ tredir 6002 xmachine:6000 $ setenv DISPLAY localhost:2 $ xterm Ceci devrait ouvrir un xterm sur la machine xmachine. Notez que nous avons positionne DISPLAY sur localhost:2. La justification en est que les clients X utilisent parfois des _s_o_c_k_e_t_s _u_n_i_x _d_o_m_a_i_n plutot que des _s_o_c_k_e_t_s _i_n_t_e_r_n_e_t _d_o_m_a_i_n lorsqu'ils se connectent a un _d_i_s_p_l_a_y local (lorsque DISPLAY contient :2, par exemple). localhost:2 demande l'utilisation d'une connexion TCP. En ce qui concerne xmachine, la requete X provient de la machine placee a l'extremite distante de votre liaison term (remotemachine). C'est pourquoi, si vous voulez autoriser la connexion, vous devez utiliser soit xhost + remotemachine sur xmachine, soit xauth pour mettre a jour le fichier .Xauthority de votre machine locale pour le _d_i_s_p_l_a_y 2, en utilisant la cle de xmachine. Une fois encore, pour accelerer les connexions X, vous pouvez utiliser le programme sxpc pour etablir la liaison. sxpc contient des explications sur la facon d'utiliser tredir et de l'autoriser, en utilisant xauth. 77..22..22.. tteerrmm et le mail Bien, vous l'aurez voulu ! Le courrier electronique a la reputation justifiee d'etre l'un des services les plus difficiles a mettre en place sur les machines UNIX. Faire fonctionner term avec le courrier electronique implique une bonne comprehension des mecanismes de ce dernier, ce qui deborde largement le cadre de ce document. Pour en savoir plus sur le courrier electronique, procurez-vous un ouvrage sur l'administration de systemes UNIX et/ou le FAQ (_f_r_e_q_u_e_n_t_l_y _a_s_k_e_d _q_u_e_s_t_i_o_n_s) du _n_e_w_s_g_r_o_u_p comp.mail.misc, disponible par ftp anonyme sur rtfm.mit.edu, dans le repertoire electronique avec term. Tous deux sont accessibles par ftp anonyme sur sunsite.unc.edu. Il s'agit de term.mailerd+mail de Byron A. Jeff et de BCRMailHandlerXXX de Bill C. Riemers. Ceci etant dit, voici une description succinte de la facon dont le courrier electronique fonctionne. Deux parties sont a considerer : l'envoi et la reception de messages. Commencons par envoyer des messages de votre machine locale vers le reseau. Il y a deux sortes de programmes de courrier electronique. Les premiers sont appeles MUA (_m_a_i_l _u_s_e_r _a_g_e_n_t) et permettent de lire, composer et envoyer des messages. Parmi les MUA les plus connus, on trouve elm , pine, Mail et vm. Les MUA ne font aucun travail de reseau, ils se contentent d'assembler les messages. Le vrai travail d'envoi des messages est realise par le second type de programmes, a savoir les MTA (_m_a_i_l _t_r_a_n_s_f_e_r _a_g_e_n_t_s) qui sont appeles par les MUA. Ils prennent les messages, decident de l'endroit ou il faut les envoyer (en fonction de l'adresse fournie) et les envoient effectivement sur le reseau. Les deux MTA les plus courants sur les systemes Linux sont sendmail et smail. L'idee de base et de faire se connecter votre MTA a un autre MTA tournant sur une machine du reseau, laquelle saura quoi faire de vos messages. Pour cela, il faut rediriger un port local sur le port smtp de la machine placee sur le reseau. Ensuite, indiquez a votre MTA qu'il doit envoyer a celui du reseau tout message qu'il ne sait pas traiter. Celui-ci saura alors comment envoyer le message vers sa destination. Comment cela se passe-t-il avec smail ? Tout d'abord, on redirige un port vers le port smtp de la machine du reseau (mailhost) : tredir XXXX mailhost:25 ou XXXX est le numero du port local auquel smail va se connecter (notez qu'il est necessaire de donner un nom a ce port dans le fichier '/etc/services' pour que smail le reconnaisse). smail possede plusieurs fichiers de configuration generalement places dans '/usr/local/lib/smail'. Ceux qui nous interessent sont 'config', 'routers' et 'transports'. Notez bien que nous supposons que vous avez deja configure smail correctement pour traiter vos messages locaux. Une fois de plus, consultez la documentation si ca n'est pas le cas. Dans le fichier 'config', il faut placer la definition suivante : smart_path=localhost localhost etant la machine a laquelle smail se connecte lorsqu'il ne sait pas quoi faire d'un message. Dans le fichier 'routers', ajoutez : smart_host: driver=smarthost, transport=termsmtp; path = localhost Enfin, ajoutez dans 'transports' : termsmtp: driver=tcpsmtp, inet, return_path, remove_header="From", append_header="From: VOTRE_ADRESSE_RESEAU", -received, -max_addrs, -max_chars; service=VOTRE_SERVICE_SMTP, Dans les quelques lignes ci-dessus, les lignes d'en-tete (_h_e_a_d_e_r) changent tous les en-tetes des messages qui partent de chez vous en l'adresse VOTRE_ADRESSE_RESEAU, qui est l'adresse reseau a partir de laquelle vous voulez que les messages semblent etre envoyes. Si plusieurs utilisateurs utilisent votre liaison term, il vous faudra avoir recours a quelque chose de plus acrobatique, comme maintenir une base de donnees des adresses reseau des utilisateurs locaux et les inserer dans les en-tetes From:. La ligne service est le nom du port local que vous avez redirige vers le port smtp de la machine connectee au reseau. Avec la version de smail qu'utilise l'auteur, il est impossible d'utiliser juste un nombre. Il est necessaire de mettre un nom tel que "toto" et de definir "toto" dans le fichier _s_u_i_d_e et ne faites que rediriger le port smtp (25), il n'est nul besoin de definir ce "toto". Cela devrait suffire pour vous mettre sur la voie. Si vous decidez d'utiliser sendmail, les principes sont les memes, bien que les details different. Ronald Florence (ron@mlfarm.com) a affirme a l'auteur que le sendmail de SUN ne peut envoyer une file de plusieurs messages vers le port redirige, mais que le sendmail BSD 8.6.9 fonctionne correctement. Ronald a applique a sendmail les modifications suivantes de facon a le faire fonctionner avec term. Dans son cas, le port sendmail par defaut (25) est utilise pour le trafic local d'un reseau _e_t_h_e_r_n_e_t et le courrier electronique _I_n_t_e_r_n_e_t est donc transmis a un port TCP redirige. # # Creation du mailer termsmtp qui envoie le courrier via un port TCP redirige # Mtermsmtp,P=[TCP], F=mDFMuCXe, S=22, R=22, A=TCP $h PORTNUMBER Ici, PORTNUMBER est le numero du port redirige de la machine locale. Cela doit etre un port inutilise de numero superieur a 2000. Il faut ensuite indiquer a sendmail a quelle machine se connecter et faire de termsmtp le _m_a_i_l_e_r par defaut. # # Principal mailer de relai # DMtermsmtp # # Principal hote de relai : utilise le mailer $M pour envoyer # le courrier vers d'autres domaines # DR HOSTNAME CR HOSTNAME Ou HOSTNAME est le nom de votre machine locale (est-ce que localhost fonctionne ?). La derniere ligne suit la regle 0 pour retransmettre le courrier _I_n_t_e_r_n_e_t. # Envoyer les autres noms valides au forwarder R$*<@$*.$+>$* $#$M $@$R $:$1<@$2.$3>$4 user@any.domain Lorsque la connexion term avec l'hote _I_n_t_e_r_n_e_t est etablie, lancez les commandes suivantes sur la machine locale. tredir PORTNUMBER internet.host:25 /usr/lib/sendmail -q Nous allons maintenant nous preoccuper de recevoir du courrier electronique a l'aide de term. Nous supposerons que le courrier est envoye a votre compte sur la machine mailhost connectee au reseau. La solution la plus simple est d'utiliser trsh ou termtelnet pour se connecter a mailhost et d'y lire votre courrier. Il est cependant possible de telecharger automatiquement votre courrier sur la machine locale, grace a POP (_p_o_s_t _o_f_f_i_c_e _p_r_o_t_o_c_o_l). POP a ete precisement concu dans ce but : envoyer le courrier electronique a des machines n'ayant que des acces intermittents au reseau. Pour utiliser POP, il faut qu'il y ait un serveur POP installe sur mailhost. Si tel est le cas, vous pouvez utiliser un client POP pour telecharger votre courrier regulierement. Comme on pouvait s'y attendre, tredir joue un role dans la procedure. Le port utilise par le service POP est le 110 (_n_._b_. il existe un ancien protocole POP-2 qui utilise le port 109. Nous parlons ici de POP-3 qui est la derniere version de POP). Plusieurs clients POP sont disponibles. L'un d'eux, ecrit en langage perl par William Perry et maintenu par l'auteur, est pop-perl-1.X. On peut le trouver sur sunsite dans /pub/Linux/system/Mail. Pour utiliser POP, il faut rediriger un port local vers le port 110 de mailhost et configurer le client de facon a ce qu'il recupere le courrier sur localhost en utilisant le port local. Supposons par exemple qu'il y a un serveur POP qui tourne sur mailhost. Nous redirigeons le port local 2110 et lancons le client pop-perl. $ tredir 2110 mailhost:110 Redirecting 2110 to mailhost:110 $ pop Username: bill Password: Pop Host: localhost Pop Port: 2110 Starting popmail daemon for bill Si vous n'avez pas de serveur POP a votre disposition, le paquetage BCRMailHandler contient un programme permettant de telecharger le courrier electronique vers votre machine locale grace a term. L'auteur ne l'a jamais utilise, mais quiconque le possede est encourage a le commenter. Vous pouvez egalement utiliser le paquetage term.mailerd+smail. Malheureusement, aucun de ces deux paquetages ne fonctionne avec les versions 2.0.0 et ulterieures de term. 88.. ttuuddpprreeddiirr tudpredir est tres semblable a tredir dans ce qu'il fait et dans la facon dont il est execute. La grosse difference entre les deux programmes est que l'un (tredir) sert a rediriger vers la connexion term les services reseau TCP, alors que l'autre (tudpredir) permet de rediriger les services reseau UDP (_U_s_e_r _D_a_t_a_g_r_a_m _P_r_o_t_o_c_o_l). Une autre difference importante est que tredir se place automatiquement en arriere-plan une fois qu'il a etabli la communication avec le port local, alors que tudpredir doit etre mis en arriere-plan manuellement. La syntaxe classique de la commande tudpredir est : tudpredir [cette_machine_ci:]port [cette_machine_la:]port 99.. AAuuttoommaattiissaattiioonnss Maitenant que vous savez comment obtenir de term tous vos services reseau, il peut etre agreable de mettre en place une initialisation et une configuration automatiques de votre connexion. Il y a a peu pres une infinite de facons d'y parvenir, selon le programme de communication que vous utilisez et la facon dont vous vous connectez au systeme distant. Il existe un programme que l'auteur n'a pas utilise, mais dont il a entendu dire le plus grand bien. Il s'agit de fet, un frontal pour term. Il est concu pour vous connecter a un systeme distant et lancer term et tous vos tredir. Tout commentaire sur fet est le bienvenu. Voici maintenant un exemple d'un ensemble de commandes qui utilise kermit pour se connecter au systeme distant et effectuer toutes les initialisations de term. Il est clair qu'il vous faudra modifier ces exemples pour les adapter a votre procedure de connexion. La commande qui est effectivement lancee est le script shell 'knet' : #!/bin/sh /usr/bin/kermit -y $HOME/.kerm_term > $HOME/klog < /dev/null 2>& 1 exec $HOME/bin/tstart >> $HOME/klog 2>& 1 Le script '.kerm_term' est le suivant : pause 2 # Le numero a composer output atdtXXXXXXX \13 # Connexion au serveur de terminal input 145 {name: } output MYNAME \13 input 3 {word: } output MYPASSWORD \13 input 5 {xyplex>} # Rendre la ligne transparente output term telnet-t \13 output term stopb 1 \13 # Connexion au systeme distant. output telnet hotedistant.domainequelconque.org \13 input 10 {ogin: } output MYOTHERNAME \13 input 3 word: output MYOTHERPASSWORD \13 pause 5 # On lance le term distant output exec term -s 38400 -l $HOME/tlog -w 10 -t 150 \13 ! /usr/bin/term -r -l $HOME/tlog -s 38400 -c off -w 10 -t 150 < /dev/modem > /dev/modem & # Lancer les autres clients ici si necessaire suspend !killall -KILL term Finalement, le script 'tsart' qui lance les clients term est le suivant : #!/bin/sh # # Ceci permet au courrier electronique de sortir. # On peut lire les news ici et recuperer le courrier . # /usr/local/bin/tredir 2025 25 2119 newshost:119 2110 pophost:110 # # On peut lancer X windows ici # /usr/local/bin/trsh -s txconn # # Pour recevoir le courrier electronique... # /usr/local/bin/pop # # On vide la queue... # /usr/bin/runq # # La, c'est fini. # echo ^G^G > /dev/console Lorsqu'enfin vous souhaitez terminer la connexion, revenez a kermit et quittez-le. La derniere ligne du _s_c_r_i_p_t tue le term local et replace le systeme dans son etat initial. ( Note de l'auteur : plutot que de faire '!killall -KILL term', il devrait etre possible de faire un '!tshutdown'. Cela devrait egalement marcher, non ?) Comme nous l'avons deja dit, il y a des zillions de facons de proceder. Ces exemples ne sont fournis que pour vous aider a demarrer. D'autres exemples peuvent etre trouves dans les paquetages autoterm et JoeltermStuff. 1100.. PPoorrttaaggee ddee llooggiicciieellss ppoouurr uunnee uuttiilliissaattiioonn aavveecc tteerrmm En principe, tout programme pouvant etre utilise avec un reseau peut egalement l'etre avec term. Certains d'entre eux peuvent etre obtenus avec un support term integre. En font partie : telnet, (nc)ftp, Mosaic et nombre d'autres. La plupart de ces programmes ont ete compiles pour les versions de term 1.17 et anterieures; ils devraient cependant continuer a fonctionner avec les versions de term plus recentes. Une autre facon de faire fonctionner des programmes avec term est d'en assurer vous-meme le portage. C'est le sujet dont traite cette partie. Le dernier moyen de modifier vos programmes pour term est de les termifier. 1100..11.. PPoorrttaaggee eett ccoommppiillaattiioonn ddeess ssoouurrcceess Le portage pour term peut etre realise selon une procedure relativement simple : Si le programme doit etre installe dans '/usr/local' par _r_o_o_t : 1. Ajoutez le parametre de compilation -include /usr/local/include/termnet.h 2. et ajoutez -ltermnet a la liste de bibliotheques. S'il doit etre installe dans votre repertoire utilisateur : 1. Ajoutez le parametre de compilation -include $HOME/term/termnet.h 2. et ajoutez -L$HOME/term -ltermnet a la liste de bibliotheques. Compilez maintenant le logiciel comme l'indique le document 'INSTALL' ou 'README' fourni avec. Cela devrait suffire ! Les commandes devraient alors fonctionner a la fois avec et sans term. telnet localhost n'utilise pas term pour effectuer la connexion, mais : telnet bohr.physics.purdue.edu utilisera term, uniquement si vous n'avez pas d'autre type de connexion reseau. Certaines commandes telles que rlogin ne peuvent etre lancees que par _r_o_o_t et par le proprietaire de la connexion term (utilisateurs privilegies). Certaines commandes term seront transparentes et n'utiliseront term que s'il n'y a pas d'autre possibilite. C'est en particulier le cas de telnet et ftp. D'autres ont besoin d'un parametre qui leur indique qu'elles peuvent utiliser term. C'est le cas de xarchie, fsp et ytalk. Vous pouvez parametrer ces programmes pour qu'ils utilisent term en positionnant la variable d'environnement termMODE selon les indications du fichier 'README.security', ou bien en utilisant make installnet. En fin de compte, le fichier 'termnet' cree contiendra des instructions speciales pour le reseau. Pour l'instant, seule son existence est controlee. Si vous ajoutez une connexion _e_t_h_e_r_n_e_t a vote systeme, il vous suffit d'effacer le fichier NOTE : Les programmes dont le portage a ete realise a l'epoque de client.a peuvent etre recompiles pour etre utilises avec des versions plus recentes de term en changeant simplement la reference a client.a en libtermnet.a. 1100..22.. tteerrmmiiffyy Ce paquetage permet de convertir des executables _l_i_n_k_e_s de facon dynamique, en vue d'une utilisation avec term. Avant de pouvoir utiliser termify il vous faut vous assurer que vous avez bien a votre disposition la version 2.2i de term (est-ce la version 2.2.8 ?) ou une version plus recente, ainsi que la version 4.5.26 ou une version plus recente de libc.so. Il vous faut alors creer le fichier 'libt.so.4' dans le repertoire A l'heure actuelle, il vous faut reconstruire le fichier 'libt.so.4' a chaque fois que vous changez de version de term. Une fois cette bibliotheque creee, vous pouvez laisser termify digerer le programme que vous voulez rendre utilisable avec term, grace a la commande : termify Si le resultat ne vous plait pas, l'operation inverse est possible : termify -u Le paquetage contient egalement un _s_c_r_i_p_t permettant de _t_e_r_m_i_f_i_e_r completement smail, de telle facon qu'aucune definition de transport particuliere ne soit necessaire. La seule modification que vous aurez eventuellement a apporter est le champ 'From: '. 1111.. CClliieennttss tteerrmm 1111..11.. CClliieennttss tteerrmm disponibles sur les sites ftp Voici une liste des applications capables de fonctionner avec term. Elle n'est pas certainement pas exhaustive; toute information complementaire est donc la bienvenue. Autant que possible, le site et le repertoire dans lequel l'application peut etre trouvee (autant que le sache l'auteur) sont fournis. Lorsque le site indique est sunsite.unc.edu, l'application peut etre trouvee dans l'un des repertoires suivants : 1. /pub/Linux/apps/comm/term/apps 2. /pub/Linux/apps/comm/term/extra LLee ppaaqquueettaaggee tteerrmm : tupload tdownload (versions 2.1.0 et plus recentes) trsh tmon tredir tudpredir (versions 2.0.0 et plus recentes) txconn trdate(d) tshutdown libtermnet TTrraannssffeerrtt ddee ffiicchhiieerrss :: ftpd sunsite.unc.edu termncftp sunsite.unc.edu ncftp185 sunsite.unc.edu:/pub/Linux/system/Network/file-transfer fsp sunsite.unc.edu:/pub/Linux/system/Network/file-transfer SSyysstteemmeess dd''iinnffoorrmmaattiioonn :: lynx Mosaic sunsite.unc.edu:/pub/Linux/system/Network/info-systems/Mosaic chimera netscape sunsite.unc.edu:/pub/Linux/system/Network/info-systems httpd xgopher gopher sunsite.unc.edu CCoonnnneexxiioonn aa ddiissttaannccee :: termtelnet sunsite.unc.edu rlogin physics.purdue.edu:/pub/bcr/term/extra rsh physics.purdue.edu:/pub/bcr/term/extra NNeettnneewwss :: tin 1.3 sunsite.unc.edu:/pub/Linux/system/Mail/news news2 sunsite.unc.edu CCoouurrrriieerr eelleeccttrroonniiqquuee :: slurp sunsite.unc.edu smail sunsite.unc.edu term.mailerd+smail sunsite.unc.edu BCRMailHandlerXXX physics.purdue.edu:/pub/bcr/term SSccrriippttss dd''aauuttoommaattiissaattiioonn :: JoeltermStuff sunsite.unc.edu autoterm sunsite.unc.edu fet sunsite.unc.edu AAuuttrreess pprrooggrraammmmeess :: inetd sunsite.unc.edu rdate sunsite.unc.edu xgospel sunsite.unc.edu:/pub/Linux/games/x11/networked termify physics.purdue.edu:/pub/bcr/term/extra xboard sunsite.unc.edu ircII sunsite.unc.edu:/pub/Linux/system/Network/chat whois xwebster sunsite.unc.edu sxpc ftp.x.org:/R5contrib xztalk sunsite.unc.edu:/pub/Linux/apps/sound/talk 1111..22.. LLee ppaaqquueettaaggee tteerrmmnneett Le paquetage termnet-2.0.4-Linux-bin.tar.gz (sunsite.unc.edu:/pub/Linux/apps/comm/term) contient un ensemble de clients term precompiles ainsi qu'un ensemble de _s_c_r_i_p_t_s, de pages de manuel et libtermnet 2.00.04. Les clients ont ete compiles avec cette version de libtermnet.so. Le paquetage contient les clients suivants : fet perl sperl4.036 tmon tshutdown xgopher finger perl4.036 suidperl trdate tudpredir ytalk ftp rcp taintperl trdated tupload fwhois rlogin telnet tredir txconn ncftp rsh term trsh xarchie ATTENTION : Le paquetage contient l'ensemble precompile complet des clients de term 2.0.4, ainsi que term lui-meme. N'installez pas ce paquetage avant d'etre sur de ce que vous faites. Lorsque vous commencerez a deplacer les executables, vous allez detruire les autres versions de term et de ses clients. 1111..33.. AApppplliiccaattiioonnss nnee ffoonnccttiioonnnnaanntt ppaass eennccoorree aavveecc tteerrmm 1. DOOM : Le probleme avec ce jeu semble etre le fait qu'il utilise le port 5039 a la fois en tant que client et en tant que serveur. 2. NFS : Le serveur NFS est suppose n'accepter des requetes que si la socket demandant la connexion est attachee a un port inferieur a 1024. Ceci semble poser probleme. Cepedant, certains serveurs NFS possedent une option 'insecure'. Dans ce cas, il se pourrait finalement que NFS fonctionne, si la gestion des RPC est ajoutee a term. 1122.. tteerrmm eett llaa sseeccuurriittee Dans cette partie sont evoques certains des aspects de la securite de term. Les problemes y sont evoques et des moyens d'accroitre la securite sont donnes. 1122..11.. ttrrsshh trsh pose des problemes de securite lorsqu'il est utilise pour acceder a la machine locale depuis le systeme distant. Le probleme pose par term de ses clients est qu'en plus du proprietaire de la connexion term, _r_o_o_t peut lancer, par l'intermediaire de la connexion des programmes modifies pour term. Ceci implique en particulier que le _r_o_o_t du systeme distant peut lancer trsh et donc se faire passer pour le proprietaire de la connexion term assez facilement. Si cet utilisateur sur la machine locale est _r_o_o_t, les risques encourus sont considerables. La solution a ce probleme est simple : il vous suffit d'ajouter la ligne suivante dans le fichier denyrsh on Cette ligne indique que personne ne peut lancer de trsh sur votre machine depuis le systeme distant. L'acces a votre machine est cependant encore possible par l'intermediaire de la connexion term, en utilisant telnet et les ports rediriges. 1122..22.. ttxxccoonnnn et xauth txconn n'est pas particulierement sur. N'importe qui peut se connecter a votre serveur local par l'intermediaire de term et se livrer a toutes sortes d'exactions. Si ce genre de problemes vous inquiete, il est conseille d'utiliser xauth pour autoriser vos connexions. Un exemple de l'utilisation de xauth pour securiser vos connexions est donne dans la partie suivante. 1122..33.. ssxxppcc, xhost et xauth L'utilisation de xauth est tres importante pour assurer la securite lorsque vous utilisez sxpc. Si vous n'utilisez pas xauth en conjonction avec sxpc, tous les risques d'un xhost + s'appliquent. Entre autres, ils sont les suivants : +o Quelqu'un peut regarder ce qui est affiche a votre ecran. +o Quelqu'un peut savoir ce que vous tapez. +o Quelqu'un peut entrer des commandes dans vos fenetres (par exemple une commande pour effacer tous vos fichiers :(). xauth est fourni avec X depuis la R4. Nous decrivons ici comment en mettre en place une utilisation de base. Attention, cette configuration est vulnerable au _s_n_o_o_p_i_n_g. NNOOTTEE :: lorsque vous utilisez xauth, votre variable d'environnement $DISPLAY ne doit PAS etre positionnee sur localhost (ou localhost:quelquechose). Si votre variable d'environnement $DISPLAY utilise localhost, les clients seront incapables de trouver les informations d'autorisation adequates. La solution est d'utiliser le nom reel de la machine. Si vous suivez les instructions de compilation contenues dans le fichier 'README' et compilez sans l'option -DNOGETHOSTNAME, tout devrait fonctionner correctement. Appelons C la machine sur laquelle vous allez lancer les clients et D celle sur laquelle ils seront affiches. Tout d'abord, choisissez une _c_l_e composee d'au plus 16 couples de chiffres hexadecimaux (c'est-a-dire un nombre pair de caracteres compris entre 0 et 9 et a et f). Dans l'exemple qui suit, il vous faudra remplacer par sa valeur. Sur C : % xauth xauth: creating new authority file $HOME/.Xauthority Using authority file $HOME/.Xauthority xauth> add Chostname:8 MIT-MAGIC-COOKIE-1 xauth> exit Sur D : % xauth xauth: creating new authority file $HOME/.Xauthority Using authority file $HOME/.Xauthority xauth> add Dhostname/unix:0 MIT-MAGIC-COOKIE-1 xauth> add Dhostname:0 MIT-MAGIC-COOKIE-1 xauth> exit Lorsque vous lancez le serveur X sur D, il faut alors lui passer le parametre -auth $HOME/.Xauthority. Peut-etre vous faudra-t-il creer ou modifier le fichier exemple : #!/bin/sh exec X -auth $HOME/.Xauthority $* Assurez-vous que votre fichier '.Xauthority' n'est accessible en lecture que par vous, a la fois sur C et sur D. 1133.. SSoouurrcceess dd''iinnffoorrmmaattiioonn Dans cette partie sont indiquees un certain nombres d'adresses ftp et d'URL utiles auxquelles vous trouverez des logiciels et des informations sur term. ffttpp :: sunsite.unc.edu:/pub/Linux/apps/comm/term/ sunsite.unc.edu:/pub/Linux/docs/HOWTO physics.purdue.edu:/pub/bcr/term/ UURRLL :: http://sunsite.unc.edu/mdw/HOWTO/term-HOWTO.html http://zeus.cs.kun.nl:4080/term-howto/term-HOWTO.html http://physics.purdue.edu/~bcr/homepage.html nneettnneewwss :: comp.os.linux.announce annonces des nouvelles versions de term et du term-HOWTO comp.os.linux.help voici ou poser vos questions sur term comp.os.linux.misc un autre endroit pour les questions comp.protocols.misc on peut trouver ici des reponses aux questions sur term Lorsque vous posez des questions dans les _n_e_w_s, assurez-vous de fournir toutes les informations utiles pour y repondre (version de term, comment vous avez installe votre connexion, etc.). Actuellement, de nombreuses versions de term sont utilisees et elles ont toutes des problemes specifiques ou communs. Ainsi, si vous souhaitez des reponses utiles, precisez au moins la version de term que vous utilisez. Dans le cas contraire, certaines suppositions hasardeuses devront etre faites pour vous aider a resoudre votre probleme. 1144.. SSttaabbiilliittee ddeess vveerrssiioonnss ddee tteerrmm A l'heure actuelle, de nombreuses versions de term ont ete repandues. Bill Riemers, qui s'occupe de la maintenance de term, nous confie la liste suivante, qui indique quelles en sont les versions stables et celles qu'il est plus prudent d'eviter. term110 --> stabilite inconnue term111 --> stabilite inconnue term112 --> stabilite inconnue term113 --> stabilite inconnue term114 --> version BETA relativement stable term115 --> version BETA instable term116 --> version BETA instable term117 --> version BETA instable term118 --> version BETA moyennement stable term119 --> version GAMMA stable term-2.0.X --> versions BETA relativement stables term-2.1.X --> versions BETA plus stables term-2.2.X --> nouvelles versions BETA term-2.3.X --> 1155.. PPeerrffoorrmmaanncceess ddee tteerrmm Grace a Bill McCarthy, nous avons maintenant a notre disposition un tableau indiquant les performances de term obtenues avec differents modems et differents types de connexions. Son but est de donner aux utilisateurs debutants comme experimentes une idee des configurations utilisees par leurs collegues et des resultats qu'ils obtiennent. LINUX term CHART 8/14/94 |__type/vitesse modem__|_vitesse_ligne_|_cps moyen_|__maxi__|__version__| | 1) USR SP 14.4 | 9600 | 950 | 963 | 1.17 | | 2) USR SP 14.4 | 14400 | 1376 | n/a | 1.18p06 | | 3) Zoom 2400 | 2400 | 220 | 230 | 1.19 | | 4) Boca V.32bis 14 | 57600 | 1400 | n/a | 1.01/09? | | 5) Viva 14.4 | 14400 | 1300 | n/a | 1.16 | | 6) USR SP 14.4 | 14400+ | 1550 | 1680 | 1.19 | | 7) Intel 14.4 Fax | 14400 | 1400 | 1650 | 2.0.4 | | 8) cable tv hookup | 57600 | 1500 | 1800 | 1.18p06 | | 9) Twincom 144/DFi | 57600 | 1500 | 4000? | 2.0.4 | | 10) USR SP 14.4 | 14400 | 1200 | 1500 | 1.08 | | 11) cable tv hookup | 19200 | 1300 | 1800 | 1.19 | |-----------------------------------------------------------------------| + options/parametres du termrc : 1) default escapes 2) window 5 3) baudrate 2400 4) n/a baudrate 9600 timeout 200 window 3 window 10 noise on timeout 150 5) compress off 6) baudrate 19200 7) ignore 19+17 8) compress off window 10 compress on window 4 escape 0, 13, timeout 150 timeout 90 16-19, 255 baudrate 38400 baudrate 0 shift 224 flowcrtl 500 window 10 timeout 70 retrain on breakout 24 9) compress off 10) compress off 11) baudrate 19200 baudrate 57600 baudrate 38400 compress on window 10 escape 17, 19 shift 224 timeout 200 remote escape 0, 13 16-17 noise on 19, 255 share on window 10 remote timeout 40 Eviter des caracteres a une extremite implique qu'il faut les ignorer a l'autre. 1166.. TTrruuccss eett aassttuucceess ttrroouuvveess ssuurr llee NNeett Dans les _n_e_w_s_g_r_o_u_p_s traitant de Linux, de nombreuses questions sur term reviennent reguliement, suivies de leurs reponses. Afin de reduire l'encombrement des _n_e_w_s_g_r_o_u_p_s, certaines sont traitees ici, que l'auteur ait ou non personnellement experimente les solutions proposees. +o Nombreux sont ceux qui se plaignent d'ennuis avec vi, lequel refuse d'afficher 24 lignes dans une fenetre qui en comporte pourtant bien 24. C'est en particulier le cas des utilisateurs d'Ultrix. Pour resoudre ce probleme, trois methodes sont envisageables : 1. Se connecter au systeme distant par la commande : trsh -s telnet 2. Ajouter resize; clear dans votre fichier '.login'. 3. La meilleure solution semble etre d'entrer sur le systeme distant : stty 38400 +o Nombreux sont ceux qui ont des problemes avec des connexion term qui s'interrompent, quelles qu'en soient les raisons. C'est pourquoi ils souhaitent connaitre l'etat de la connexion avant de lancer des applications. Cet etat peut etre determine grace aux petits _s_c_r_i_p_t_s _s_h_e_l_l donnes en exemple ici : Pour ceux qui utilisent tcsh : if ( { trsh -s true } ) then ... endif et pour ceux qui utilisent bash : if trsh -s true; then ... fi +o Netscape, le nouveau client WWW semble poser des problemes a ceux qui souhaitent le faire fonctionner avec term. Voici comment y parvenir : 1. Termifiez netscape. 2. Lancez termnetscape. Dans le menu Options | Preferences | Mail/Proxys, laissez vides _toutes_ les boites 'proxy'. Mettez 'remotehost' et 80 dans les boites SOCKS. 3. Ne tenez pas compte de l'erreur qui survient lorsque vous quittez le menu Options. 4. Si termnetscape ne fonctionne pas correctement : dans le menu Options | Preferences | Mail/Proxys, laissez vides _toutes_ les boites 'proxy'. Mettez 'none' et 80 dans les boites SOCKS. 5. Ne tenez pas compte de l'erreur qui survient lorsque vous quittez le menu Options. 1177.. DDiivveerrss Complements souhaitables a ce document : +o Detailler le traitement des problemes. +o Detailler les considerations de securite. +o termwrap. +o Suggestions. En tout etat de cause, si vous avez des suggestions, des critiques ou quelque remarque que ce soit a propos de ce document, n'hesitez pas. Patrick Reijnen est l'auteur actuel du term-HOWTO et peut etre joint aux adresses suivantes : patrickr@cs.kun.nl ou patrickr@sci.kun.nl. Cette remarque s'applique egalement au traducteur, dont l'adresse est : ruch@labri.u-bordeaux.fr. 1188.. RReemmeerrcciieemmeennttss Nombreux sont ceux a qui l'auteur souhaite adresser ses remerciements. Avant tout, merci a Michael O'Reilly et a l'ensemble des developpeurs de term, qui ont mis a notre disposition un si bel outil. L'auteur remercie egalement tout ceux qui ont fait part de leurs experiences et ont contribue a ce document. En font partie Bill Reynolds, le precedent auteur de ce HOWTO, Ronald Florence, Tom Payerle, Bill C. Riemers, Hugh Secker-Walker, Matt Welsh, Bill McCarthy, Sergio, Weyman Martin et bien d'autres dont il oublie de mentionner les noms. Le traducteur tient a adresser a Xavier Cazin (xc@itp.itp.fr), coordinateur des traductions francaises de la documentation Linux, ses plus vifs remerciements pour le travail qu'il accomplit et reste a son entiere disposition. Il tient egalement a remercier Olivier Belhomme (le premier cyber-S.D.F., sans domaine fixe :)) pour son travail de relecture, qui a permis a ce document de ne pas arriver jusqu'a vous truffe d'erreurs.