Provided by: manpages-fr_1.67.0-1_all bug

NOM

       chat - Script de conversation automatisée avec un modem

SYNOPSIS

       chat [ options ] script

DESCRIPTION

       Le  programme  chat régit une « conversation » entre l’ordinateur et le
       modem. Son but premier est d’établir la connexion entre pppd, le  démon
       du Protocole Point à Point, et le processus pppd distant.

OPTIONS

       -f <fichier chat>
              Utilise  le  script chat du fichier chat. L’utilisation de cette
              option  et  celle  des  paramètres  de  chat  sont  mutuellement
              exclusives.  L’utilisateur doit avoir le droit de lecture sur le
              fichier. Le fichier peut comporter plusieurs lignes ; les blancs
              et  les  caractères  de tabulation sont utilisables pour séparer
              les chaînes.

       -t <temps limite>
              Fixe le temps limite (en secondes) d’attente d’une chaîne. Si la
              chaîne  n’est pas reçue dans ce laps de temps, la chaîne-réponse
              n’est pas envoyée. Une chaîne  alternative  peut  être  envoyée.
              S’il  n’y en a pas, le script s’arrêtera sur une erreur. Dans ce
              cas, le programme chat se terminera avec une  valeur  de  retour
              non nulle.

       -r <fichier rapport>
              Détermine  le  fichier  devant  contenir  les chaînes de rapport
              (voir ci-dessous).  Si vous précisez le mot-clef REPORT dans  le
              script,  les  chaînes  suivant  celui-ci  seront écrites dans ce
              fichier. Si cette option  n’est  pas  utilisée,  mais  que  vous
              mentionnez  quand même REPORT dans le script, la sortie standard
              (stderr) sera utilisée pour le rapport des chaînes transmises.

       -e     Démarre avec l’option echo activée. Cette option peut aussi être
              activée  ou désactivée en des points spécifiques du script chat,
              en utilisant le mot-clef ECHO. Quand echo  est  activée,  toutes
              les sorties du modem sont envoyées vers stderr.

       -E     Active   la   substitution   des   variables  d’environnement  à
              l’intérieur des scripts chat, grâce à la syntaxe standard  $xxx.

       -v     Demande  que  le  script  chat  soit  exécuté en mode bavard. Le
              programme chat enregistrera alors l’état d’exécution du  script,
              en  plus des chaînes reçues et envoyées au modem. La méthode par
              défaut d’enregistrement est d’utiliser  le  SYSLOG ;  elle  peut
              être modifiée par les drapeaux -S et -s.

       -V     Demande  que  le  script  chat  soit  exécuté en mode bavard sur
              stderr.   Le  programme  chat  affichera  alors  sur  la  sortie
              standard  toutes  les  chaînes  reçues  et envoyées au modem. La
              sortie  standard  est  généralement   la   console   locale   de
              l’ordinateur exécutant le programme chat ou pppd.

       -s     Utilise   la   sortie   standard  (stderr).  Tous  les  messages
              d’enregistrement générés par -v et tous  les  messages  d’erreur
              seront envoyés vers stderr.

       -S     N’utilise  pas le SYSLOG. Par défaut, les messages d’erreur sont
              envoyés vers SYSLOG. L’utilisation de -S empêchera les  messages
              générés  par  -v et les messages d’erreur d’être envoyés vers le
              SYSLOG.

       -T <n tl.>
              Passe  une  chaîne  arbitraire,  habituellement  un  numéro   de
              téléphone,  qui sera substituée au métacaractère de substitution
              \T dans une chaîne d’envoi.

       -U <2e n tl.>
              Passe  une  deuxième  chaîne,  habituellement   un   numéro   de
              téléphone,  qui sera substituée au métacaractère de substitution
              \U dans une chaîne d’envoi.  C’est utile pour appeler  un  modem
              RNIS, qui a besoin de deux numéros.

       script Si  le  script n’est pas lu dans un fichier avec l’option -f, il
              doit être inclus sous forme de paramètres du programme chat.

SCRIPT CHAT

       Le script chat régit les communications.

       Un  script  consiste  en   une   ou   plusieurs   paires   de   chaînes
       attendue/envoyée  (expect/send),  séparées  par  des  espaces, avec une
       paire optionnelle  « sous-attendue/sous-envoyée »  (subexpect-subsend),
       séparées par un tiret, comme dans l’exemple suivant :

              ogin:-BREAK-ogin: ppp ssword: hello2u2

       Cette  ligne  indique au programme chat d’attendre la chaîne « ogin: ».
       S’il ne reçoit pas d’invite de login dans l’intervalle de temps alloué,
       il   doit   envoyer   une   séquence   d’interruption   (BREAK)  à  son
       correspondant, puis attendre à  nouveau  la  chaîne  « ogin: ».  Si  le
       premier   ogin: »  est  reçu,  la  séquence  d’interruption  n’est  pas
       envoyée.

       Dès qu’il aura reçu l’invite de login, le  programme  chat  enverra  la
       chaîne  « ppp », puis attendra l’invite « ssword: ». À sa réception, il
       enverra le mot de passe « hello2u2 ».

       Un retour chariot suit normalement chaque chaîne envoyée. En  revanche,
       aucun  retour  chariot  n’est  prévu  dans une chaîne attendue, à moins
       qu’il  ne  soit  spécifiquement  exigé  en  utilisant  la  séquence  de
       caractères « \r ».

       La  chaîne  attendue  ne devrait contenir que le strict nécessaire pour
       identifier la chaîne.  Comme  elle  est  normalement  stockée  dans  un
       fichier  sur  le  disque,  elle  ne  devrait pas contenir d’information
       variable, comme des heures, des durées, des identifications de  réseau.

       Pour  être  moins sensible aux caractères qui pourraient être corrompus
       pendant la séquence initiale, attendez la chaîne « ogin: »  plutôt  que
       « login: ».   Il  est  possible  que le « l » initial soit mal reçu, et
       dans ce cas chat ne trouvera jamais la chaîne attendue.  Pour  la  même
       raison, les scripts attendent « ssword: » plutôt que « password: ».

       Un script très simple pourrait ressembler à ceci :

              ogin: ppp ssword: hello2u2

       En  clair,  attend  ....ogin:,  envoie  ppp,  attend ...ssword:, envoie
       hello2u2.

       Dans la pratique, les scripts simples  sont  rares.  Au  minimum,  vous
       devriez  inclure  des  séquences « sous-attendues » au cas où la chaîne
       d’origine ne soit pas reçue. Par exemple, examinez le script suivant :

              ogin:--ogin: ppp ssword: hello2u2

       C’est  un  script  un  peu  meilleur  que  celui,  simpliste,   utilisé
       précédemment.   Il attend la même invite « login: », mais si elle n’est
       pas reçue, il envoie un simple retour chariot, puis se remet en attente
       de  « login: ».  Si  du  bruit  sur la ligne interfère avec la première
       invite, l’envoi d’une ligne vide  génère  habituellement  une  nouvelle
       invite.

COMMENTAIRES

       Des   commentaires   peuvent  être  inclus  dans  un  script  chat.  Un
       commentaire est une ligne commençant par  un  caractère  #  (dièse)  en
       première colonne.  Ces lignes sont simplement ignorées par le programme
       chat. Si un caractère # est le premier caractère d’une chaîne attendue,
       cette chaîne doit être placée entre guillemets :

              # Attend maintenant l’invite puis envoie la chaîne
              # « logout » (déconnexion)
              ’# ’ logout

ENVOYER DES DONNÉES DEPUIS UN FICHIER

       Si  la  chaîne  à  envoyer commence par une arobase (@), le reste de la
       chaîne est considéré comme le nom d’un fichier à lire pour  obtenir  la
       chaîne à envoyer.  Si le dernier caractère des données lues est un saut
       de ligne, il est supprimé.  Le fichier peut  être  un  tube  nommé  (ou
       fifo)  au  lieu  d’un fichier régulier. Cela fournit à chat un moyen de
       communiquer avec un autre  programme,  par  exemple  un  programme  qui
       affiche une invite et reçoit un mot de passe entré par l’utilisateur.

CHAÎNES DABANDON (ABORT)
       La  plupart  des modems signalent l’état de la communication sous forme
       d’une chaîne. Ces chaînes peuvent être CONNECTED (connecté), NO CARRIER
       (pas  de  porteuse),  ou  BUSY  (occupé).  Il est souvent préférable de
       terminer  le  script  si  le  modem  échoue  à  se  connecter   à   son
       correspondant.  La  difficulté  est  qu’un  script  ne  peut pas savoir
       exactement quelle chaîne il risque de recevoir  du  modem.  Lors  d’une
       tentative, il peut recevoir BUSY, alors qu’à la suivante, il recevra NO
       CARRIER.

       Ces chaînes d’abandon (abort) peuvent être spécifiées  dans  le  script
       avec le mot-clef ABORT, comme dans l’exemple suivant :

              ABORT BUSY ABORT ’NO CARRIER’ ’’ ATZ OK ATDT5551212 CONNECT

       Cette  séquence  n’attend rien, et envoie la chaîne ATZ (initialisation
       modem).  La réponse attendue est la  chaîne  OK.  À  sa  réception,  il
       envoie  la  chaîne  ATDT5551212  pour  composer  le  numéro.  La chaîne
       attendue est alors CONNECT.  Dès qu’elle est reçue, le reste du  script
       est  exécuté.  Mais si le modem tombe sur une ligne occupée, il enverra
       la chaîne BUSY, qui correspondra à une des chaînes d’abandon.  De  même
       si  le programme reçoit NO CARRIER.  Les deux chaînes seront reconnues,
       et termineront toutes deux le script.

RÉINITIALISATION DES CHAÎNES DABANDON (CLR_ABORT)
       Cette  séquence  permet  d’effacer  les  chaînes   ABORT   précédemment
       spécifiées.   Les  chaînes ABORT sont gardées dans un tableau de taille
       prédéterminée (à la compilation)  ;  CLR_ABORT  récupère  l’espace  des
       entrées  effacées,  qui  peut  alors  être  utilisé  par  les nouvelles
       chaînes.

CHAÎNES SAY

       La  directive  SAY  permet  au   script   d’envoyer   des   chaînes   à
       l’utilisateur,  à  travers  la sortie d’erreur standard du terminal. Si
       chat est lancé par pppd, et que pppd tourne comme démon (détaché de son
       terminal  de  contrôle),  l’erreur  standard sera normalement redirigée
       vers le fichier /etc/ppp/connect-errors.

       Les chaînes SAY doivent être entre apostrophes simples ou doubles.   Si
       un  retour  chariot  ou un saut de ligne est nécessaire en sortie, vous
       devez l’ajouter explicitement à la chaîne.

       Les chaînes SAY peuvent être utilisées pour afficher  des  messages  de
       progression  dans  des sections du script en « ECHO OFF », mais pendant
       lesquelles vous voulez tout de même tenir l’utilisateur au  courant  de
       ce qui se passe.  Voici un exemple :

              ABORT BUSY
              ECHO OFF
              SAY "J’appelle votre FAI...\n"
              ’’ ATDT5551212
              TIMEOUT 120
              SAY "J’attends la connexion jusqu’à 2 minutes... "
              CONNECT ’’
              SAY "Connecté, maintenant je me logue...0
              ogin: utilisateur
              ssword: pass
              $ SAY "OK, logué...0 etc ...

       Cette  séquence  ne  présentera à l’utilisateur que les chaînes SAY, et
       lui épargnera tous les détails. Par exemple,  si  le  script  ci-dessus
       fonctionne, l’utilisateur verra :

              J’appelle votre FAI...
              J’attends la connexion jusqu’à 2 minutes... Connecté, maintenant
              je me loggue...
              OK, loggué...

CHAÎNES DE RAPPORT

       Une chaîne de rapport (report) est similaire à une  chaîne  ABORT.   La
       différence  est que les chaînes, ainsi que tous les caractères jusqu’au
       prochain caractère de contrôle (comme le retour chariot), sont  écrites
       dans le fichier de rapport.

       Les chaînes de rapport peuvent être utilisées pour extraire le débit de
       la chaîne de connexion envoyée par le modem, et  envoyer  la  valeur  à
       l’utilisateur  de  chat.  L’analyse  des chaînes de rapport se pratique
       idéalement couplée avec d’autres  traitements,  comme  l’attente  d’une
       chaîne.   L’utilisation d’une même chaîne dans deux séquences REPORT et
       ABORT n’est probablement  pas  très  utile,  mais  elle  est  toutefois
       possible.

       Les  chaînes  de  rapport  ne  modifient  pas  la  valeur  de retour du
       programme.

       Ces chaînes de rapport peuvent être spécifiées dans le  script  par  le
       mot-clef REPORT, comme dans l’exemple suivant :

              REPORT  CONNECT  ABORT  BUSY  ’’  ATDT5551212  CONNECT  ’’ ogin:
              account

       Cette séquence n’attend rien, et  envoie  la  chaîne  ATDT5551212  pour
       composer  le numéro. La chaîne attendue est CONNECT. Si elle est reçue,
       le reste du script est exécuté. En outre, le programme écrira  dans  le
       fichier  de rapport la chaîne « CONNECT », plus tous les caractères qui
       la suivent, comme le débit.

RÉINITIALISATION DES CHAÎNES DE RAPPORT (CLR_REPORT)

       Cette  séquence  permet  d’effacer  les  chaînes  REPORT   précédemment
       spécifiées.   Les chaînes REPORT sont gardées dans un tableau de taille
       prédéterminée (à la compilation) ;  CLR_REPORT  récupère  l’espace  des
       entrées  effacées,  qui  peut  alors  être  utilisé  par  les nouvelles
       chaînes.

ECHO

       L’option echo contrôle si la sortie du modem doit être  dupliquée  vers
       stderr. Cette option peut être activée avec l’option -e sur la ligne de
       commande, mais peut aussi être contrôlée par le mot-clef ECHO  dans  le
       script.  La paire « attendue/envoyée » ECHO ON active l’option, et ECHO
       OFF la désactive. Grâce à ce mot-clef, vous pouvez sélectionner quelles
       parties  de la conversation doivent être visibles. Par exemple, avec le
       script suivant :

              ABORT   ’BUSY’
              ABORT   ’NO CARRIER’
              ’’      ATZ
              OK\r\n  ATD1234567
              \r\n    \c
              ECHO    ON
              CONNECT \c
              ogin:   account

       toutes les sorties résultant de la configuration  du  modem  et  de  la
       numérotation restent invisibles, alors que tout est visible à partir du
       message CONNECT (ou BUSY).

HANGUP

       L’option HANGUP contrôle si un raccrochage du modem doit être considéré
       comme  une  erreur ou pas. Cette option est utile dans les scripts pour
       les systèmes de rappel, qui raccrochent et  rappellent  votre  système.
       Les options de HANGUP peuvent être ON ou OFF.
       Si  HANGUP est réglé à OFF et que le modem raccroche (par exemple, à la
       fin de la première étape de connexion à un  système  de  rappel),  chat
       continuera  d’exécuter le script (par exemple, par l’attente d’un appel
       entrant et d’une invite de login en début de seconde  étape).  Dès  que
       l’appel  entrant  est pris, vous pouvez utiliser la directive HANGUP ON
       pour réinstaurer le comportement normal au signal de raccrochage. Voici
       un script (simple) d’exemple :

              ABORT   ’BUSY’
              ’’      ATZ
              OK\r\n  ATD1234567
              \r\n    \c
              CONNECT \c
              ’Callback login:’ call_back_ID
              HANGUP OFF
              ABORT "Bad Login"
              ’Callback Password:’ Call_back_password
              TIMEOUT 120
              CONNECT \c
              HANGUP ON
              ABORT "NO CARRIER"
              ogin:--BREAK--ogin: real_account
              etc ...

DÉLAI DEXPIRATION (TIMEOUT)
       Le  délai  d’expiration  (timeout)  initial est de 45 secondes. Il peut
       être changé par le paramètre -t de la ligne de commande.

       Pour changer la valeur du délai  pour  la  prochaine  chaîne  attendue,
       inspirez-vous de l’exemple suivant :

              ATZ  OK  ATDT5551212  CONNECT  TIMEOUT 10 ogin:--ogin: TIMEOUT 5
              assword: hello2u2

       Cela fixe le délai d’expiration à  10  secondes  pendant  l’attente  de
       l’invite   login: ».  Puis  ce  délai  est  ramené à 5 secondes pendant
       l’attente de l’invite de mot de passe.

       Une fois modifié, le nouveau délai reste en vigueur  jusqu’à  ce  qu’il
       soit à nouveau changé.

ENVOYER UN EOT

       La  chaîne  d’envoi  spéciale  EOT  indique  que le programme chat doit
       envoyer un caractère EOT (End Of Transmission, fin de  transmission)  à
       son correspondant. Normalement, c’est la séquence de caractères End-of-
       file (fin de fichier). Aucun caractère de  retour  n’est  envoyé  après
       l’EOT.   La  séquence  EOT peut être incluse dans une chaîne d’envoi en
       utilisant la séquence ^D.

GÉNÉRER UNE INTERRUPTION (BREAK)

       La chaîne d’envoi spéciale BREAK envoie  une  interruption.  Il  s’agit
       d’un  signal  spécial généré par le modem (NdT : courte interruption de
       la porteuse). Des interruptions peuvent  être  utilisées  pour  changer
       cycliquement  de  débit de transmission, parmi ceux disponibles chez le
       correspondant, jusqu’à ce que vous  receviez  une  invite  valide.   La
       séquence  d’interruption  peut  être incluse dans une chaîne d’envoi en
       utilisant la séquence \K.

SÉQUENCES DÉCHAPPEMENT
       Les chaînes  attendues  et  envoyées  peuvent  contenir  des  séquences
       d’échappement.   Elles  sont  toutes  autorisées  dans  les  chaînes de
       réponse (envoyées), la plupart le  sont  dans  les  chaînes  attendues.
       Celles qui ne le sont pas sont signalées.

       ’’     Attend  ou  envoie  une  chaîne vide. Si vous envoyez une chaîne
              vide, chat enverra aussi  le  caractère  retour  chariot.  Cette
              séquence peut être entourée d’apostrophes simples ou doubles.

       \b     représente un backspace.

       \c     Supprime  le  caractère  retour  chariot  à  la fin de la chaîne
              envoyée. C’est la seule méthode pour  envoyer  une  chaîne  sans
              retour  chariot  final. Il doit être placé à la fin de la chaîne
              d’envoi. Par exemple, la séquence « hello\c » enverra simplement
              les  caractères  h,  e,  l,  l, o.  Ce nest pas valide dans une
              chane attendue.

       \d     Délai d’une seconde. Le programme utilise sleep(1), qui attendra
              une seconde.  Ce nest pas valide dans une chane attendue.

       \K     Insère  une  interruption (BREAK).  Ce nest pas valide dans une
              chane attendue.

       \n     Envoie un saut de ligne.

       \N     Envoie un caractère nul. La même séquence peut être  représentée
              par \0.  Ce nest pas valide dans une chane attendue.

       \p     Marque  une  pause  d’1/10 de seconde.  Ce nest pas valide dans
              une chane attendue.

       \q     Empêche l’écriture de la  chaîne  dans  le  fichier  SYSLOG.  La
              chaîne  ??????  est écrite à sa place.  Ce nest pas valide dans
              une chane attendue.

       \r     Envoie ou attend un retour chariot.

       \s     Représente un espace dans la chaîne. Cela peut être utilisé pour
              éviter  de mettre la chaîne entre guillemets. Les séquences « HI
              TIM » et « HI\sTIM » sont équivalentes.

       \t     Envoie ou attend un caractère de tabulation.

       \T     Envoie la chaîne passée en paramètre par l’option -T.  Ce  nest
              pas valide dans une chane attendue.

       \U     Envoie  la chaîne passée en paramètre par l’option -U.  Ce nest
              pas valide dans une chane attendue.

       \\     Envoie ou attend un caractère "backslash".

       \ddd   Envoie le caractère  ASCII  dont  le  code  en  octal  est  ddd.
              Certains   caractres  ne  sont  pas  valides  dans  une  chane
              attendue.

       ^C     Substitue à la séquence le caractère de contrôle représenté  par
              C.   Par  exemple,  le caractère DC1 (17) est représenté par ^Q.
              Certains  caractres  ne  sont  pas  valides  dans  une   chane
              attendue.

VARIABLES DENVIRONNEMENT
       Les variables d’environnement sont disponibles dans les scripts chat si
       l’option -E a été spécifiée sur la ligne de commande. Le  métacaractère
       $  est  utilisé pour introduire le nom de la variable d’environnement à
       substituer. Si la substitution échoue parce que la variable  n’est  pas
       définie, rien ne remplacera la variable.

VALEURS DE RETOUR

       Le programme chat se terminera en renvoyant l’un de ces codes :

       0      Terminaison  normale  du  programme.  Cela indique que le script
              s’est exécuté sans erreur jusqu’à la fin.

       1      L’un au moins des paramètres est invalide, ou  bien  une  chaîne
              attendue est trop longue pour les tampons internes. Cela indique
              que le programme ne s’est pas exécuté correctement.

       2      Un erreur est survenue durant  l’exécution  du  programme.  Cela
              peut  être  dû  à  une  erreur de lecture ou d’écriture, ou à la
              réception par CHAT d’un signal comme SIGINT.

       3      Une expiration de délai (timeout) a eu  lieu  pendant  l’attente
              d’une  chaîne  sans  chaîne  « -sousenvoyée ». Cela peut vouloir
              dire que votre script n’est pas adapté aux conditions, ou  qu’un
              événement inattendu a eu lieu, et que la chaîne attendue n’a pas
              été reçue.

       4      La première  chaîne  marquée  par  une  condition  ABORT  a  été
              détectée.

       5      La  deuxième  chaîne  marquée  par  une  condition  ABORT  a été
              détectée.

       6      La troisième chaîne  marquée  par  une  condition  ABORT  a  été
              détectée.

       7      La  quatrième  chaîne  marquée  par  une  condition  ABORT a été
              détectée.

       ...    Toutes  les  autres  valeurs  de  retour  indiquent  aussi   une
              condition ABORT.

       Grâce  à  la  valeur  de  retour,  il  est  possible de déterminer quel
       événement a terminé le script. Il est possible de décider si la  chaîne
       « BUSY »  a été reçue par le modem, ou si c’est « NO DIAL TONE ».  Dans
       le premier cas, il est possible de refaire  une  tentative  plus  tard,
       alors  que cela a peu de chance de marcher (sans intervention manuelle)
       dans le second.

VOIR AUSSI

       Des informations supplémentaires sur  les  scripts  chat  peuvent  être
       trouvées  dans  la documentation UUCP. Le script chat a été développé à
       partir d’idées proposées dans les scripts  utilisés  par  le  programme
       uucico.

       uucico(1), uucp(1)

COPYRIGHT

       Le  programme  chat  est  dans  le domaine public. Il n’est PAS sous la
       Licence Publique GNU (GPL). S’il  se  casse,  vous  pouvez  garder  les
       morceaux.

TRADUCTION

       Guillaume Allègre <Guillaume.Allegre@imag.fr>, août 2000

AVERTISSEMENT SUR LA TRADUCTION

       Il est possible que cette traduction soit imparfaite ou périmée. En cas
       de doute,  veuillez  vous  reporter  au  document  original  en  langue
       anglaise fourni avec le programme.