Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 59 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       chat [ options ] script


       The chat program defines a conversational exchange between
       the computer and the modem.  Its  primary  purpose  is  to
       establish the connection between the Point-to-Point Proto­
       col Daemon (pppd) and the remote's pppd process.


       -f <chat file>
              Read the chat script from the chat file. The use of
              this  option  is  mutually  exclusive with the chat
              script parameters. The user must have  read  access
              to  the  file.  Multiple lines are permitted in the
              file. Space or horizontal tab characters should  be
              used to separate the strings.

       -t <timeout>
              Set  the  timeout  for  the  expected  string to be
              received. If the string is not received within  the
              time  limit  then  the reply string is not sent. An
              alternate reply may be sent or the script will fail
              if  there  is  no  alternate reply string. A failed
              script will cause the  chat  program  to  terminate
              with a non-zero error code.

       -r <report file>
              Set  the  file for output of the report strings. If
              you use the keyword REPORT, the  resulting  strings
              are  written  to  this  file. If this option is not
              used and you still use REPORT keywords, the  stderr
              file is used for the report strings.

       -e     Start  with  the echo option turned on. Echoing may
              also be turned on or off at specific points in  the
              chat script by using the ECHO keyword. When echoing
              is enabled, all output from the modem is echoed  to

       -E     Enables  environment  variable  substituion  within
              chat scripts using the standard $xxx syntax.

       -v     Request that the chat script be executed in a  ver­
              bose  mode. The chat program will then log the exe­
              cution state of the chat script as well as all text
              received from the modem and the output strings sent
              to the modem.  The default is to  log  through  the
              SYSLOG;  the logging method may be altered with the
              -S and -s flags.

       -V     Request that the  chat  script  be  executed  in  a
       -T <phone number>
              Pass in an arbitary string, usually a phone number,
              that will be substituted for  the  \T  substitution
              metacharacter in a send string.

       -U <phone number 2>
              Pass  in  a  second string, usually a phone number,
              that will be substituted for  the  \U  substitution
              metacharacter  in  a  send  string.  This is useful
              when dialing an ISDN terminal adapter that requires
              two numbers.

       script If  the  script is not specified in a file with the
              -f option then the script is included as parameters
              to the chat program.


       The chat script defines the communications.

       A  script  consists  of one or more "expect-send" pairs of
       strings, separated by spaces, with an optional "subexpect-
       subsend"  string  pair, separated by a dash as in the fol­
       lowing example:

              ogin:-BREAK-ogin: ppp ssword: hello2u2

       This line indicates that the chat  program  should  expect
       the  string "ogin:". If it fails to receive a login prompt
       within the time interval allotted, it is to send  a  break
       sequence to the remote and then expect the string "ogin:".
       If the first "ogin:" is received then the  break  sequence
       is not generated.

       Once  it  received  the login prompt the chat program will
       send the string ppp and then expect the prompt  "ssword:".
       When it receives the prompt for the password, it will send
       the password hello2u2.

       A carriage return is normally  sent  following  the  reply
       string.  It  is not expected in the "expect" string unless
       it is specifically requested by  using  the  \r  character

       The  expect sequence should contain only what is needed to
       identify the string. Since it is normally stored on a disk
       file,  it  should  not contain variable information. It is
       generally not acceptable to look for time strings, network
       identification  strings,  or other variable pieces of data
       as an expect string.

       To help correct for characters which may be corrupted dur­
       ing  the  initial  sequence,  look  for the string "ogin:"
       least, you should include sub-expect sequences should  the
       original string not be received. For example, consider the
       following script:

              ogin:--ogin: ppp ssword: hello2u2

       This would be a better script than  the  simple  one  used
       earlier.  This would look for the same login: prompt, how­
       ever, if one was not received, a single return sequence is
       sent  and  then it will look for login: again. Should line
       noise obscure the first  login  prompt  then  sending  the
       empty line will usually generate a login prompt again.


       Comments  can be embedded in the chat script. A comment is
       a line which starts with the # (hash) character in  column
       1.  Such  comment  lines are just ignored by the chat pro­
       gram. If a '#' character is to be expected  as  the  first
       character  of  the  expect  sequence, you should quote the
       expect string.  If you want to  wait  for  a  prompt  that
       starts  with a # (hash) character, you would have to write
       something like this:

              # Now wait for the prompt and send logout string
              ´# ' logout


       If the string to send starts with an at sign (@), the rest
       of the string is taken to be the name of a file to read to
       get the string to send.  If the last character of the data
       read is a newline, it is removed.  The file can be a named
       pipe (or fifo) instead of a regular file.  This provides a
       way  for  chat  to  communicate  with another program, for
       example, a program to prompt the user and receive a  pass­
       word typed in.


       Many  modems  will  report  the  status  of  the call as a
       string. These strings may be CONNECTED or  NO  CARRIER  or
       BUSY. It is often desirable to terminate the script should
       the modem fail to connect to the remote. The difficulty is
       that a script would not know exactly which modem string it
       may receive. On one attempt, it may receive BUSY while the
       next time it may receive NO CARRIER.

       These "abort" strings may be specified in the script using
       the ABORT sequence. It is written in the script as in  the
       following example:
       same reason. Either string may be received. Either  string
       will terminate the chat script.


       This  sequence  allows  for  clearing previously set ABORT
       strings.  ABORT strings are kept in an  array  of  a  pre-
       determined  size  (at  compilation  time);  CLR_ABORT will
       reclaim the space for cleared entries so that new  strings
       can use that space.


       The SAY directive allows the script to send strings to the
       user at the terminal via standard error.  If chat is being
       run  by  pppd,  and  pppd is running as a daemon (detached
       from its controlling terminal), standard error  will  nor­
       mally be redirected to the file /etc/ppp/connect-errors.

       SAY  strings  must be enclosed in single or double quotes.
       If carriage return and line feed are needed in the  string
       to  be  output,  you  must  explicitely  add  them to your

       The SAY strings could be used to give progress messages in
       sections  of  the script where you want to have 'ECHO OFF'
       but still let the user know what is happening.  An example

              ABORT BUSY
              ECHO OFF
              SAY "Dialling your ISP...\n"
              ´' ATDT5551212
              TIMEOUT 120
              SAY "Waiting up to 2 minutes for connection ... "
              CONNECT ''
              SAY "Connected, now logging in ...0
              ogin: account
              ssword: pass
              $ SAY "Logged in OK ...0 etc ...

       This  sequence  will  only  present the SAY strings to the
       user and all the details of the script will remain hidden.
       For example, if the above script works, the user will see:

              Dialling your ISP...
              Waiting up to 2 minutes  for  connection  ...  Con­
              nected, now logging in ...
              Logged in OK ...


       A  report  string is similar to the ABORT string. The dif­

       These  "report"  strings  may  be  specified in the script
       using the REPORT sequence. It is written in the script  as
       in the following example:

              ogin: account

       This sequence will  expect  nothing;  and  then  send  the
       string  ATDT5551212  to  dial  the telephone. The expected
       string is CONNECT. If the string CONNECT is  received  the
       remainder  of the script is executed. In addition the pro­
       gram will write to the expect-file  the  string  "CONNECT"
       plus any characters which follow it such as the connection


       This sequence allows for clearing  previously  set  REPORT
       strings.   REPORT  strings  are kept in an array of a pre-
       determined size (at  compilation  time);  CLR_REPORT  will
       reclaim  the space for cleared entries so that new strings
       can use that space.


       The echo options controls  whether  the  output  from  the
       modem is echoed to stderr. This option may be set with the
       -e option, but it can also be controlled by the ECHO  key­
       word.  The "expect-send" pair ECHO ON enables echoing, and
       ECHO OFF disables it. With this  keyword  you  can  select
       which  parts  of  the  conversation should be visible. For
       instance, with the following script:

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

       all output resulting from modem configuration and  dialing
       is  not  visible,  but starting with the CONNECT (or BUSY)
       message, everything will be echoed.


       The HANGUP options control whether a modem  hangup  should
       be  considered  as an error or not.  This option is useful
       in scripts for dialling systems which  will  hang  up  and
       call  your  system  back.  The HANGUP options can be ON or
       When HANGUP is set OFF and the modem hangs up (e.g., after
       the  first stage of logging in to a callback system), chat
              TIMEOUT 120
              CONNECT \c
              HANGUP ON
              ABORT "NO CARRIER"
              ogin:--BREAK--ogin: real_account
              etc ...


       The initial timeout value  is  45  seconds.  This  may  be
       changed using the -t parameter.

       To  change  the  timeout value for the next expect string,
       the following example may be used:

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

       This will change the timeout to 10 seconds when it expects
       the login: prompt. The timeout is then changed to  5  sec­
       onds when it looks for the password prompt.

       The  timeout,  once changed, remains in effect until it is
       changed again.


       The special reply string of EOT indicates  that  the  chat
       program  should  send an EOT character to the remote. This
       is normally the End-of-file character sequence.  A  return
       character is not sent following the EOT.  The EOT sequence
       may be embedded into the send string  using  the  sequence


       The  special reply string of BREAK will cause a break con­
       dition to be sent. The break is a special  signal  on  the
       transmitter.  The  normal processing on the receiver is to
       change the transmission rate.  It may  be  used  to  cycle
       through  the  available  transmission  rates on the remote
       until you are able to receive a valid login  prompt.   The
       break  sequence may be embedded into the send string using
       the \K sequence.


       The expect and reply strings may contain escape sequences.
       All  of  the sequences are legal in the reply string. Many
       are legal in the expect.  Those which are not valid in the
       expect sequence are so indicated.

       ''     Expects  or sends a null string. If you send a null
              string then it will still send the  return  charac­
              ter. This sequence may either be a pair of apostro­

       \K     Insert a BREAK (not valid in expect.)

       \n     Send a newline or linefeed character.

       \N     Send  a  null  character.  The same sequence may be
              represented by \0.  (not valid in expect.)

       \p     Pause for a fraction of  a  second.  The  delay  is
              1/10th of a second.  (not valid in expect.)

       \q     Suppress writing the string to the SYSLOG file. The
              string ?????? is written to the log in  its  place.
              (not valid in expect.)

       \r     Send or expect a carriage return.

       \s     Represents  a  space  character in the string. This
              may be used when it is not desirable to  quote  the
              strings  which  contains  spaces.  The sequence 'HI
              TIM' and HI\sTIM are the same.

       \t     Send or expect a tab character.

       \T     Send the phone number string as specified with  the
              -T option (not valid in expect.)

       \U     Send  the  phone  number 2 string as specified with
              the -U option (not valid in expect.)

       \\     Send or expect a backslash character.

       \ddd   Collapse the octal digits (ddd) into a single ASCII
              character  and  send that character.  (some charac­
              ters are not valid in expect.)

       ^C     Substitute the sequence with the control  character
              represented  by  C.  For example, the character DC1
              (17) is shown as  ^Q.   (some  characters  are  not
              valid in expect.)


       Environment  variables  are available within chat scripts,
       if  the -E option was specified in the command  line.  The
       metacharacter $ is used to introduce the name of the envi­
       ronment variable to substitute. If the  substition  fails,
       because  the  requested  environment  variable is not set,
       nothing is replaced for the variable.


       The chat program will terminate with the following comple­
       tion codes.

       3      A  timeout  event occurred when there was an expect
              string without having a "-subsend" string. This may
              mean  that you did not program the script correctly
              for the condition or that some unexpected event has
              occurred  and  the  expected  string  could  not be

       4      The first  string  marked  as  an  ABORT  condition

       5      The  second  string  marked  as  an ABORT condition

       6      The third  string  marked  as  an  ABORT  condition

       7      The  fourth  string  marked  as  an ABORT condition

       ...    The other termination codes are also strings marked
              as an ABORT condition.

       Using  the  termination  code, it is possible to determine
       which event terminated  the  script.  It  is  possible  to
       decide if the string "BUSY" was received from the modem as
       opposed to "NO DIAL TONE". While the first  event  may  be
       retried,  the  second  will probably have little chance of
       succeeding during a retry.


       Additional information about chat  scripts  may  be  found
       with  UUCP  documentation.  The chat script was taken from
       the ideas proposed by the scripts used by the uucico  pro­

       uucico(1), uucp(1)


       The  chat program is in public domain. This is not the GNU
       public license. If it breaks then you  get  to  keep  both

Chat Version 1.22          22 May 1999                    CHAT(8)
Show your Support for the Linux Tutorial

Purchase one of the products from our new online shop. For each product you purchase, the Linux Tutorial gets a portion of the proceeds to help keep us going.



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
You can choose larger fonts by selecting a different themes.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.09 Seconds