<!doctype linuxdoc system> <article> <title>mini-HOWTO PPP-par-minicom <author>Winfried Trümper (<htmlurl url="winni@xpilot.org" name="winni@xpilot.org">)&nl; Traduction : Philippe Martin (<htmlurl url="mailto:feloy@wanadoo.fr" name="feloy@wanadoo.fr">) <date>v0.0 09 December 1996 <abstract> Vous désirez un outil commandé par menu pour traiter avec PPP ? Un annuaire téléphonique puissant et facile d'utilisation avec les numéros de téléphone de votre ISP ? Vous voulez voir ce qui se passe lors d'une connexion ? Alors ce mini-HowTo est pour vous ! <toc> <sect>Introduction <p> PPP est devenu le protocole réseau standard pour se relier à l'internet via le réseau téléphonique. Le démon <tt>pppd</tt> associé est un outil de connexion très primitif qui manie seulement des configurations très simples.&nl; Je vais décrire ici une alternative basée sur <tt>minicom</tt>. <p> Cette documentation est une version simplifiée du document allemand <it>Internetanbindung mit PPP</it> (<htmlurl url="http://www.uni-koeln.de/themen/linux/ppp/" name="http://www.uni-koeln.de/themen/linux/ppp/">). <sect1>Le terminal minicom <p> <tt>minicom</tt> est un outil très sophistiqué pour se connecter à d'autres ordinateurs (ISP ou BBS). Il possède un menu en couleur d'une grande qualité, un annuaire téléphonique et un puissant langage de script. Il convient donc absolument pour une utilisation conjointe avec <tt>pppd</tt>. <p> Mais attention, si vous exécutez <tt>/sbin/mgetty /dev/modem</tt>, toute personne ayant un compte valide sur votre machine peut utiliser la connexion (par exemple avec <tt>minicom</tt>). Mais ceci est une autre histoire. Veuillez consulter la documentation sur <tt>mgetty</tt> pour plus d'informations. <sect1>Commentaires <p> Je suis uniquement interessé par des remarques qui pourraient faire évoluer ce mini-HowTo. Je ne répondrai pas aux questions générales sur Linux, PPP, SLIP ou les réseaux. <sect1>Bogues connues <p> A l'heure où j'écris ce document, il semble y avoir quelques bogues dans <tt>minicom</tt>, <tt>runscript</tt> et dans la méthode décrite ci-dessous : <itemize> <item><tt>runscript</tt> n'attend pas que les programmes externes finissent <verb> print "ding" ! sleep 10 print "dong" </verb> Ce script se termine immédiatement (mais pas sous <tt>strace</tt> ...) <item><tt>pppd</tt> retire le port série à <tt>minicom</tt> (quand il n'est pas alimenté par <tt>stdin</tt>). </itemize> <p> Il semblerait que Miquel van Smoorenburg (l'auteur de <tt>minicom</tt>) soit trop occupé pour y mettre le doigt dessus. Les volontaires seront alors les bienvenus. <sect>Se connecter avec minicom <p> Un grand nombre de documentations sur PPP recommandent de quitter <tt>minicom</tt> après l'avoir utilisé pour se connecter. Mais vous n'avez vraiment pas besoin de quitter cet agréable programme... <sect1>Configurer minicom <p> Exécutez <tt>minicom -s</tt> et choisissez l'article de menu <it>Serial port setup</it> (Configuration du port série). La première entrée devrait être <it>Serial device</it> (Périphérique série) et c'est le paramètre le plus important : le périphérique série auquel votre modem est rattaché. (Des volontaires pour retoucher <tt>minicom</tt> afin qu'il puisse gérer plusieurs périphériques série à la fois ?)&nl; Pressez <bf><return></bf> pour confirmer puis <bf><esc></bf> pour revenir au menu de configuration initial. Choisissez <it>Exit to minicom</it> (Sortie vers minicom) et tapez <tt>atdt99999</tt>. Votre modem devrait commencer à composer le numéro immédiatement et vous devriez entendre un <it>click</it> lorsque le modem se relie à la ligne. Heureusement, <tt>99999</tt> n'est pas un numéro de téléphone valide. <sect1>Démarrer PPP à la main <p> Peut-être avez-vous déjà essayé de composer le numéro de téléphone de votre ISP au lieu de <tt>99999</tt>. Vous avez alors sûrement vu de drôles de caractères apparaître à l'écran après être entré dans le système (sinon, tapez <tt>ppp</tt>). Ils proviennent du démon <tt>pppd</tt> (ou équivalent) démarré à l'autre bout de la ligne. Dans ce cas, vous pouvez essayer de démarrer le démon <tt>pppd</tt> de votre côté, et évaluer le fichier <it>log</it> par la suite. <p> Pour démarrer <tt>pppd</tt> depuis <tt>minicom</tt>, vous pouvez définir une nouvelle méthode de chargement (voyez comment par vous-même) ou redéfinir le paramètre <it>kermit program</it> depuis le menu de configuration <it>Filename and paths</it>(Fichiers et répertoires) : <verb> A - Download directory : B - Upload directory : C - Script directory : D - Script program : /usr/bin/runscript E - Kermit program : /usr/sbin/pppd file /etc/ppp/mini_options </verb> Maintenant, si vous voyez apparaître ces drôles de caractères la prochaine fois que vous appelez votre ISP, vous pouvez presser les touches <tt><Alt></tt>+<tt><K></tt> pour démarrer <tt>pppd</tt>. <p> La suite de ce mini-HowTo traite de l'automatisation du processus de connexion et de démarrage de <tt>pppd</tt>. <sect1>Evaluer le fichier log<label id="eval-log"> <p>Bien que mon but ne soit pas d'expliquer comment configurer PPP, je donne un petit conseil pour lire le fichier <it>log</it>. Pour extraire les informations essentielles du fichier <it>log</it> <tt>/var/log/debug</tt> (ou <tt>/var/log/daemon.log</tt>), exécutez la commande <verb> tail -n 40 /var/log/debug |\ grep -E " pppd\[[0-9]*\]:" |\ sed -e "s/^.*pppd\[/[/" </verb> Vous devriez voir des messages comme <verb> sent [LCP ConfReq id=0x1 <mru 296>] rcvd [LCP ConfRej id=0x1 <mru 296>] </verb> qui indiquent que nous avons envoyé (<it>sent</it>) une requête de configuration (<it>Config-request</it>) pour mettre le bloc maximal de réception (<it>maximum receive unit - mru</it>) à 296. Le second message refuse cette configuration (<it>configuration rejected</it>). Dans ce cas, j'ai juste retiré l'option <tt>mru</tt> dans <tt>/etc/ppp/options</tt> (voir plus loin). <sect1>Configurer un numéro de téléphone <p> Si tout a bien marché jusqu'ici, vous voudrez sûrement enregistrer un numéro de téléphone dans l'annuaire de <tt>minicom</tt>. Pressez <tt><ALT></tt>+<tt><D></tt> pour faire apparaître le menu de composition d'un numéro (<it>dialing menu</it>) et utilisez les touches du curseur pour sélectionner <tt>Edit</tt> : <verb> A - Name : Xeno B - Number : 022039697303 C - Dial string # : 1 D - Local echo : No E - Script : /etc/ppp/login.script F - Username : ppp-382 G - Password : top-secret H - Terminal Emulation : VT102 I - Backspace key sends : Delete J - Linewrap : Off K - Line Settings : Curr 8N1 </verb> <p> Ceci est un exemple d'entrées pour me connecter à l'un de mes ISP. Le script <tt>/etc/ppp/login.script</tt> apparaît plus loin. Deux variables particulières sont passées au script : <tt>$(LOGIN)</tt> et <tt>$(PASS)</tt> qui prennent les valeurs entrées comme nom d'utilisateur (<it>F - Username</it>) et mot de passe (<it>G - Password</it>). Cette caractéristique rend <tt>minicom</tt> assez souple car il utilise un unique script pour automatiser la connexion à différents ISP. <sect1>Un script de connexion <p><tt>minicom</tt> lance le script de connexion après avoir reçu la chaîne de caractères <tt>CONNECT</tt>. Pour être plus précis, <tt>minicom</tt> ne le lance pas lui-même, mais appelle pour ça l'utilitaire <tt>runscript</tt> comme sous-procesus. <p> En voici un exemple (que j'utilise pour mon ISP) : <verb> # v1.0, 20.08.96 Winfried Trumper <winni@xpilot.org> print "" print "Connexion automatique via /etc/ppp/login.script" ## Retirez le commentaire si vous devez presser Entree ## pour obtenir le prompt #send "" expect { "ogin:" "ogin>" "sername:" "sername>" "NO CARRIER" exit 1 } send "$(LOGIN)" expect { "assword:" "assword>" timeout 20 } send "$(PASS)" expect { "port" send "ppp" "Start your PPP now" "}!}!}" timeout 10 } print "" print "Passage en mode PPP ..." print "" ! /usr/sbin/pppd file /etc/ppp/mini_options print "" print "la commande killall -TERM pppd termine pppd" </verb> <p> L'aptitude de <tt>runscript</tt> à appeler des programmes externes est utilisée pour démarrer <tt>pppd</tt>. Copiez votre fichier d'options original pour ppp vers <tt>/etc/ppp/options.ttyS1</tt> (remplacez <tt>ttyS1</tt> par le nom du périphérique auquel votre modem est rattaché) et supprimez toutes les lignes dans <tt>/etc/ppp/options</tt> spécifiques à votre modem (comme <tt>connect</tt>, <tt>crtscts</tt> ou <tt>modem</tt>). <p> Mettez les options spécifiques à la connexion PPP via <tt>minicom</tt> dans <tt>/etc/ppp/mini_options</tt>. Une de ces options devrait être <verb> disconnect "chat '' '\d\d+++\d\dATH\r\c'" </verb> Ceci est indispensable car <tt>pppd</tt> est alimenté par <tt>stdin</tt> et ne peut pas racccrocher le modem via <tt>crtscts</tt>. <sect1>Numérotation automatique au démarrage <p>Utilisez l'option <tt>-d</tt> pour numéroter un numéro de téléphone particulier au démarrage de <tt>minicom</tt>.&nl; Vous pouvez aussi essayer <verb> open -sl -- minicom -d 1 </verb> pour envoyer <tt>minicom</tt> sur une autre console (voir le mini-howTo Consoles-Many pour plus de détails). <sect1>Extensions futures <p> <tt>pppd</tt> étant un démon, il n'est pas conçu pour une interaction avec l'utilisateur ou pour l'observation. C'est clair. Après tout, nous utilisons un système unix... <p> La solution canonique est un programme d'arrière-plan. Des volontaires pour tailler <tt>minicom</tt> en pièces ? <p> Des extensions intéressantes seraient : <itemize> <item>la génération automatique du script de connexion par l'observation de l'utilisateur se connectant manuellement, <item>l'évaluation automatique du fichier <it>log</it> avec correction automatique des options, <item>l'extraction de messages comme ceux vus à la section <ref id="eval-log" name="Evaluer le fichier log">. </itemize> </sect> </article>