CHAT   (8) manpage
CHAT
8
22 mai 1999
Chat Version 1.22
  • NAME
      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 <timeout>
      Fixe le temps limite (en secondes) d'attente d'une cha??ne. Si la cha??ne n'est pas re??ue dans ce 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 <No t??l.>
      Passe une cha??ne arbitraire, habituellement un num??ro de t??l??phone, qui sera substitu?? au m??tacaract??re de substitution \T dans une cha??ne d'envoi.
      -U <2e No t??l.>
      Passe une deuxi??me cha??ne, habituellement un num??ro de t??l??phone, qui sera substitu?? au m??tacaract??re de substitution \U dans une cha??ne d'envoi. C'est utile pour appeler un modem ISDN, 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" de t??te soit mal re??u, et dans ce cas vous ne 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 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 D'ABANDON (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 D'ABANDON (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...n"
      ogin: account
      ssword: pass
      $ c SAY "OK, logu??...n"
      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 le traitement des autres cha??nes, comme l'attente d'une cha??ne "expect". 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. 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 en bauds.
  • 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 D'EXPIRATION (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 sur 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. (Non valide dans une cha??ne attendue.)
      \\d
      D??lai d'une seconde. Le programme utilise sleep(1) , qui attendra une seconde. (Non valide dans une cha??ne attendue.)
      \\K
      Ins??re une interruption (BREAK). (Non valide dans une cha??ne 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. (Non valide dans une cha??ne attendue.)
      \\p
      Marque une pause d'1/10 de seconde. (Non valide dans une cha??ne attendue.)
      \\q
      Emp??che l'??criture de la cha??ne dans le fichier SYSLOG. La cha??ne ?????? est ??crite ?? sa place. (Non valide dans une cha??ne 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. (Non valide dans une cha??ne attendue.)
      \\U
      Envoie la cha??ne pass??e en param??tre par l'option -U. (Non valide dans une cha??ne attendue.)
      \\\\
      Envoie ou attend un caract??re "backslash".
      \\ddd
      Envoie le caract??re ASCII donc le code en octal est ddd. (Certains caract??res ne sont pas valides dans une cha??ne 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 caract??res ne sont pas valides dans une cha??ne attendue.)
  • VARIABLES D'ENVIRONNEMENT
      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
Current Users: 49 © 1999-2006 Linux.com.hk PenguinSoft
All trademarks and copyrights on this page are owned by their respective companies. Linux is a trademark of Linus Torvalds.