mini-HOWTO PPP-par-minicom
 Winfried Truemper ([email protected])
 Traduction : Philippe Martin ([email protected])
 v0.0  09 December 1996

 Vous  desirez  un  outil commande par menu pour traiter avec PPP ?  Un
 annuaire  telephonique  puissant  et  facile  d'utilisation  avec  les
 numeros  de telephone de votre ISP ?  Vous voulez voir ce qui se passe
 lors d'une connexion ?  Alors ce mini-HowTo est pour vous !

 11..  IInnttrroodduuccttiioonn

 PPP  est  devenu  le  protocole  reseau  standard  pour  se  relier  a
 l'internet  via  le reseau telephonique.  Le demon pppd associe est un
 outil  de  connexion   tres   primitif   qui   manie   seulement   des
 configurations tres simples.
 Je vais decrire ici une alternative basee sur minicom.

 Cette  documentation  est  une version simplifiee du document allemand
 _I_n_t_e_r_n_e_t_a_n_b_i_n_d_u_n_g _m_i_t _P_P_P (http://www.uni-koeln.de/themen/linux/ppp/).

 11..11..  LLee tteerrmmiinnaall mmiinniiccoomm

 minicom  est  un  outil  tres sophistique pour se connecter a d'autres
 ordinateurs (ISP ou BBS).  Il possede un menu en couleur d'une  grande
 qualite,  un  annuaire  telephonique et un puissant langage de script.
 Il convient donc absolument pour une utilisation conjointe avec  pppd.

 Mais  attention,  si  vous  executez  /sbin/mgetty  /dev/modem,  toute
 personne ayant un compte valide sur votre  machine  peut  utiliser  la
 connexion  (par  exemple  avec  minicom).  Mais  ceci  est  une  autre
 histoire.  Veuillez consulter la documentation sur  mgetty  pour  plus
 d'informations.

 11..22..  CCoommmmeennttaaiirreess

 Je  suis  uniquement  interesse par des remarques qui pourraient faire
 evoluer ce mini-HowTo. Je ne repondrai pas aux questions generales sur
 Linux, PPP, SLIP ou les reseaux.

 11..33..  BBoogguueess ccoonnnnuueess

 A  l'heure  ou  j'ecris ce document, il semble y avoir quelques bogues
 dans minicom, runscript et dans la methode decrite ci-dessous :

 +o  runscript n'attend pas que les programmes externes finissent

            print "ding"
            ! sleep 10
            print "dong"

 Ce script se termine immediatement (mais pas sous strace ...)

 +o  pppd retire le port serie a minicom (quand il  n'est  pas  alimente
    par stdin).

 Il  semblerait  que  Miquel van Smoorenburg (l'auteur de minicom) soit
 trop occupe pour y mettre le  doigt  dessus.  Les  volontaires  seront
 alors les bienvenus.

 22..  SSee ccoonnnneecctteerr aavveecc mmiinniiccoomm

 Un  grand  nombre  de  documentations  sur PPP recommandent de quitter
 minicom apres l'avoir utilise pour se  connecter.   Mais  vous  n'avez
 vraiment pas besoin de quitter cet agreable programme...

 22..11..  CCoonnffiigguurreerr mmiinniiccoomm

 Executez  minicom -s et choisissez l'article de menu _S_e_r_i_a_l _p_o_r_t _s_e_t_u_p
 (Configuration du port serie).  La premiere entree devrait etre _S_e_r_i_a_l
 _d_e_v_i_c_e  (Peripherique serie) et c'est le parametre le plus important :
 le  peripherique  serie  auquel  votre  modem  est   rattache.    (Des
 volontaires  pour  retoucher minicom afin qu'il puisse gerer plusieurs
 peripheriques serie a la fois ?)

 Pressez <<rreettuurrnn>> pour confirmer puis <<eesscc>> pour  revenir  au  menu  de
 configuration   initial.  Choisissez  _E_x_i_t  _t_o  _m_i_n_i_c_o_m  (Sortie  vers
 minicom) et tapez atdt99999.  Votre modem devrait commencer a composer
 le  numero  immediatement et vous devriez entendre un _c_l_i_c_k lorsque le
 modem se relie a la ligne. Heureusement, 99999 n'est pas un numero  de
 telephone valide.

 22..22..  DDeemmaarrrreerr PPPPPP aa llaa mmaaiinn

 Peut-etre  avez-vous deja essaye de composer le numero de telephone de
 votre ISP au lieu de 99999.  Vous avez alors surement vu de droles  de
 caracteres  apparaitre  a  l'ecran  apres  etre  entre dans le systeme
 (sinon, tapez ppp). Ils proviennent  du  demon  pppd  (ou  equivalent)
 demarre  a l'autre bout de la ligne.  Dans ce cas, vous pouvez essayer
 de demarrer le demon pppd de votre cote, et evaluer le fichier _l_o_g par
 la suite.

 Pour  demarrer  pppd  depuis minicom, vous pouvez definir une nouvelle
 methode de chargement (voyez comment par vous-meme)  ou  redefinir  le
 parametre  _k_e_r_m_i_t _p_r_o_g_r_a_m depuis le menu de configuration _F_i_l_e_n_a_m_e _a_n_d
 _p_a_t_h_s(Fichiers et repertoires) :

         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

 Maintenant, si vous voyez  apparaitre  ces  droles  de  caracteres  la
 prochaine  fois  que  vous  appelez votre ISP, vous pouvez presser les
 touches <Alt>+<K> pour demarrer pppd.

 La suite de ce mini-HowTo traite de l'automatisation du  processus  de
 connexion et de demarrage de pppd.

 22..33..  EEvvaalluueerr llee ffiicchhiieerr lloogg

 Bien  que  mon  but ne soit pas d'expliquer comment configurer PPP, je
 donne un petit conseil pour lire le fichier  _l_o_g.  Pour  extraire  les
 informations   essentielles   du   fichier   _l_o_g   /var/log/debug  (ou
 /var/log/daemon.log), executez la commande

         tail -n 40  /var/log/debug |\
                 grep -E " pppd\[[0-9]*\]:" |\
                 sed -e "s/^.*pppd\[/[/"

 Vous devriez voir des messages comme

         sent [LCP ConfReq id=0x1 <mru 296>]
         rcvd [LCP ConfRej id=0x1 <mru 296>]

 qui indiquent que nous avons envoye (_s_e_n_t) une requete  de  configura-
 tion  (_C_o_n_f_i_g_-_r_e_q_u_e_s_t) pour mettre le bloc maximal de reception (_m_a_x_i_-
 _m_u_m _r_e_c_e_i_v_e _u_n_i_t _- _m_r_u) a 296.  Le second message refuse cette config-
 uration  (_c_o_n_f_i_g_u_r_a_t_i_o_n  _r_e_j_e_c_t_e_d).  Dans  ce  cas,  j'ai juste retire
 l'option mru dans /etc/ppp/options (voir plus loin).

 22..44..  CCoonnffiigguurreerr uunn nnuummeerroo ddee tteelleepphhoonnee

 Si tout a bien marche jusqu'ici, vous voudrez surement enregistrer  un
 numero de telephone dans l'annuaire de minicom. Pressez <ALT>+<D> pour
 faire apparaitre le menu de composition d'un numero (_d_i_a_l_i_n_g _m_e_n_u)  et
 utilisez les touches du curseur pour selectionner Edit :

         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

 Ceci est un exemple d'entrees pour me connecter a l'un de mes ISP.  Le
 script  /etc/ppp/login.script  apparait  plus  loin.   Deux  variables
 particulieres  sont  passees  au  script  :  $(LOGIN)  et  $(PASS) qui
 prennent les valeurs entrees comme nom d'utilisateur (_F _- _U_s_e_r_n_a_m_e) et
 mot de passe (_G _- _P_a_s_s_w_o_r_d).  Cette caracteristique rend minicom assez
 souple car il utilise un unique script pour automatiser la connexion a
 differents ISP.

 22..55..  UUnn ssccrriipptt ddee ccoonnnneexxiioonn

 minicom  lance  le  script  de connexion apres avoir recu la chaine de
 caracteres CONNECT.  Pour etre plus precis, minicom ne  le  lance  pas
 lui-meme,  mais  appelle  pour  ca  l'utilitaire runscript comme sous-
 procesus.

 En voici un exemple (que j'utilise pour mon ISP) :

         # v1.0, 20.08.96 Winfried Trumper <[email protected]>
         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"

 L'aptitude de runscript a appeler des programmes externes est utilisee
 pour  demarrer pppd.  Copiez votre fichier d'options original pour ppp
 vers  /etc/ppp/options.ttyS1  (remplacez   ttyS1   par   le   nom   du
 peripherique  auquel votre modem est rattache) et supprimez toutes les
 lignes dans /etc/ppp/options specifiques a votre modem (comme connect,
 crtscts ou modem).

 Mettez  les  options  specifiques  a la connexion PPP via minicom dans
 /etc/ppp/mini_options.  Une de ces options devrait etre

         disconnect "chat '' '\d\d+++\d\dATH\r\c'"

 Ceci est indispensable car pppd est alimente par stdin et ne peut  pas
 racccrocher le modem via crtscts.

 22..66..  NNuummeerroottaattiioonn aauuttoommaattiiqquuee aauu ddeemmaarrrraaggee

 Utilisez l'option -d pour numeroter un numero de telephone particulier
 au demarrage de minicom.
 Vous pouvez aussi essayer

         open -sl -- minicom -d 1

 pour envoyer minicom sur une autre console (voir  le  mini-howTo  Con-
 soles-Many pour plus de details).

 22..77..  EExxtteennssiioonnss ffuuttuurreess

 pppd  etant  un  demon,  il  n'est pas concu pour une interaction avec
 l'utilisateur ou pour l'observation.  C'est clair.  Apres  tout,  nous
 utilisons un systeme unix...

 La solution canonique est un programme d'arriere-plan. Des volontaires
 pour tailler minicom en pieces ?

 Des extensions interessantes seraient :

 +o  la generation automatique du script de connexion par  l'observation
    de l'utilisateur se connectant manuellement,

 +o  l'evaluation automatique du fichier _l_o_g avec correction automatique
    des options,

 +o  l'extraction de messages comme ceux vus a la section  ``Evaluer  le
    fichier log''.