  mini-HOWTO PPP-par-minicom
  Winfried Truemper (winni@xpilot.org)
  Traduction : Philippe Martin (feloy@wanadoo.fr)
  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 !

  11..  IInnttrroodduuccttiioonn

  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/).

  11..11..  LLee tteerrmmiinnaall mmiinniiccoomm

  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.

  11..22..  CCoommmmeennttaaiirreess

  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.

  11..33..  BBoogguueess ccoonnnnuueess

  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.

  22..  SSee ccoonnnneecctteerr aavveecc mmiinniiccoomm

  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...

  22..11..  CCoonnffiigguurreerr mmiinniiccoomm

  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 <<rreettuurrnn>> pour confirmer puis <<eesscc>> 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.

  22..22..  DDeemmaarrrreerr PPPPPP aa llaa mmaaiinn

  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.

  22..33..  EEvvaalluueerr llee ffiicchhiieerr lloogg

  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).

  22..44..  CCoonnffiigguurreerr uunn nnuummeerroo ddee tteelleepphhoonnee

  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.

  22..55..  UUnn ssccrriipptt ddee ccoonnnneexxiioonn

  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 <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"

  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.

  22..66..  NNuummeerroottaattiioonn aauuttoommaattiiqquuee aauu ddeemmaarrrraaggee

  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).

  22..77..  EExxtteennssiioonnss ffuuttuurreess

  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''.

