Provided by: manpages-zh_1.5.1-3_all bug

NAME

       chat - 與叠C自酉通的指令稿

 SYNOPSIS
       chat [ options ] script

 DESCRIPTION
       chat            程式在肽X與叠C之間定義贤ń籕事宜。           它最主要的
       目的是用碓邳ccf定的隱形程式    (pppd)    以及遠端的    pppd      程序
       之間建立連尽

 OPTIONS
       -f <chat file>
                  chat    n案讀取    chat   指令稿。這選淼氖褂门c   chat   的
              令稿⒌互斥(mutually               exclusive)。使用者必砭哂写嫒≡
              n案的讀取唷T趎案中允許多(multiple                lines)設定。
              砸钥瞻谆蚴荕向定位(horizontal tab)字元矸指糇执

       -t <timeout>
              端邮盏钠诖执(expected              string)設定逾r限制。
              如果在詒間限制萞有接收到宰执脑那麼就不送出回覆      字串(reply
              string)。                         可以送出一淄(alternate)的回覆
              或者如果]有淄ǖ幕馗沧执畉灾噶罡澧失 R皇А      的指令稿使得
              chat 程式以一非零的錯誤碼結束。

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

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

       -v     要求    chat    指令稿以冗長(verbose)模式绦小    這   chat   程
              式接下睨⑺心叠C接收的文字以及莩龅淖执涞    SYSLOG   去。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  stderr  verbose
              mode.  The chat program will then log all text received from the
              modem and the output strings sent to the  modem  to  the  stderr
              device.  This device is usually the local console at the station
              running the chat or pppd program.

       -s     Use stderr.  All log messages from '-v' and all  error  messages
              will be sent to stderr.

       -S     Do  not  use the SYSLOG.  By default, error messages are sent to
              the SYSLOG.  The use of -S will prevent both log  messages  from
              '-v' and error messages from being sent to the SYSLOG.

       -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 script   如果指令稿]有以    -f    選碇付ㄔ趎案裡那麼灾噶罡妣如同
              ⒌般被包含在 chat 程式裡。

CHAT SCRIPT
       chat 脚本定義通舆^程

       一指令稿裡包含一或多ㄆ诖方送出(expect-send)ǖ呐洇    字串(pairs    of
       string),以空白隔開,哂幸贿x裥缘抹期待Ψ         送出之候補(subexpect-
       subsend)ㄅ洇字串,以短(dash)隔開。像 下面這例子:

              ogin:-BREAK-ogin: ppp ssword: hello2u2

       這一行指示     chat     程式期待    "ogin:"    這字串。如果在所分配的
       r間^間冉邮蘸入提示失〉脑,                    那它就送出一中喑绦(break
       sequence)給遠端然後期待     "ogin:"     這字串。    如果第一    "ogin:"
       被接收到那麼中喑绦蚓筒箕產生。

       一旦它接收到院入提示t chat 程式送出  ppp  這字串然後期  待  "ssword:"
       這提示。邮盏矫艽a提示以後,它送出密碼 hello2u2 。

       一般在回覆字串後面跟著送出一C(character      sequence))壁
       ㄆ诖字串裡除非以
       矸駎不期待它的出現。

       期待程序(expect              sequence)只包含辨認字串所需要的資料。因
       它一般是Ψ旁诖诺鷑案裡,它不包含子的資印                  通常以期待
       字串恧找r間字串(time  strings),  網路辨識字串(network iden- tification
       strings),或是其它子的資料是不被接受的。

       榍骹助修正在初始化程序中(initial sequence) 可能魉湾e誤的 字元,所以ふ
       "ogin:"       這字串而不是       "login:"      。      開頭的       "l"
       字元可能接收錯誤而你永遠找不到宰执             即使它已奖幌到y送出。
       因此竟剩噶罡澶找  "ogin:"  而不是  "login:"  以及  "ssword"  而  不是
       "password:" 。

       一非常何的指令稿看起砜赡芟襁@樱

              ogin: ppp ssword: hello2u2

       Q句哉f, 期待 ...ogin:,  送出 ppp,  期待 ...ssword:, 再送出 hello2u2 。

       在際使用上,何的指令稿是罕业摹W钌僮钌伲                  韵鹊淖执甝有
       被接收r你要把候補期待(sub-sequences)包括進怼@纾糫 下面這例子:

              ogin:--ogin: ppp ssword: hello2u2

       這是一比前面所用的何指令稿更好的指令稿。   這ふ蚁嗤   同的    login:
       提示,然而,      如果]有接收到的裕     送出一为的     返回程序(return
       sequence)K且它接著再次ふ   login:   。要是雜   雜友谏w掉第一    login
       提示那麼接著送出空韭(empty line)匠 再次產生喝胩崾尽

COMMENTS

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

SENDING DATA FROM A FILE

       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
       password typed in.

 ABORT STRINGS
       許多叠C以字串砘伢呼叫的 顁。 這些字串可能是 CONNECTED 或是 NO  CARRIER
       或是    BUSY    。    通常要是叠C連镜竭h端失〉脑    希望結束指令稿。
       困難是指令稿不確地知道它可能接收到 哪叠C字串。在某次L詒, 他可能接收到
       BUSY 然而下次它可 能接收到 NO CARRIER 。

       這些ㄊАㄗ执梢杂         ABORT        程序指定到指令稿中。像是下面這
       例子般地到指令稿裡:

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

       這程序⒉箕期待什麼;而且接著送出   ATZ   這字串。Υ似诖   回   OK
       這字串。邮盏  OK r,字串 ADTD5551212 就進行 芴。期待字串是 CONNECT
       。             如果字串             CONNECT             被接收到那麼就
       绦兄噶罡迤漯N的部份。然而,要是叠C發現朐忙荆  他送  出 BUSY 這字串。
       這使得宰执鲜А字元程序(abort            char-             acter)。
       這指令稿因樗l現一失∽执(abort                            string)而
       失(fail)。如果他接收到的是  NO   CARRIER   字串,   它也因橥   的-
       因而失 2皇强梢越邮盏阶执褪亲执終結 chat 指令稿。

CLR_ABORT STRINGS

       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.

SAY STRINGS

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

       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 is:

              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  ...  Connected,  now
              logging in ...
              Logged in OK ...

REPORT STRINGS

       A  report string is similar to the ABORT string. The difference is that
       the strings, and all characters to the next control character such as a
       carriage return, are written to the report file.

       The  report strings may be used to isolate the transmission rate of the
       modem's connect string and return the  value  to  the  chat  user.  The
       analysis  of  the  report  string  logic occurs in conjunction with the
       other string processing such as looking for the expect string. The  use
       of the same string for a report and abort sequence is probably not very
       useful, however, it is possible.

       The report strings to no change the completion code of the program.

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

              REPORT  CONNECT  ABORT  BUSY  ''  ATDT5551212  CONNECT  '' 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 program will write to the expect-file the string "CONNECT"
       plus any characters which follow it such as the connection rate.

CLR_REPORT STRINGS

       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.

ECHO

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

HANGUP

       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 OFF.
       When  HANGUP  is  set OFF and the modem hangs up (e.g., after the first
       stage of logging in to a callback system), chat will  continue  running
       the  script (e.g., waiting for the incoming call and second stage login
       prompt). As soon as the incoming call is connected, you should use  the
       HANGUP  ON directive to reinstall normal hang up signal behavior.  Here
       is an (simple) example script:

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

 TIMEOUT
       初始的逾r值是 45 秒。這可以用 -t ⒌砑右愿淖。

       要ο乱黄诖执淖逾r值的裕梢允褂孟旅孢@例子:

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

       這在期待    "login:"    提示的r候把逾r限制改成    10    秒。    逾r限
       制接著在它ふ颐艽a提示r被改成 5 秒。

       逾r限制一旦改拙威持續作用直到它再度被改住

SENDING EOT
       EOT    這特e的回覆字串指示    chat    程式送出一     EOT     字元到遠
       端去。這是一般的n案結束(End-of-file)字元程序。     在     EOT     後面K
       不跟著送出一返回字元(return)。

       這 EOT 程序可以用 ^D 序列嵌入到送出的字串裡。

a GENERATING BREAK
       BREAK            這特e的回覆字串使得一中嗲閞被送出。            這中
       是魉投说囊惶厥狻=邮斩艘话悝此的汤硎歉淖鬏率。       它可以       用硌-
       hy赃h端可能的鬏率直到你能蚪拥接行У暮入提示。

       這中喑绦蚩梢杂 \K  序列嵌入到送出的字串裡。

 ESCAPE SEQUENCES
       期待以及回覆字串可以包含转义序列。           所有這種程序在回覆字串中都
       是合法的。有許多在期待字串中是合法的。 那些在期待程序中o效的 被指出。

       ''     期待或送出一空字串(null        string)        。如果你送出一空字
              串那麼它唼送出一返回字元。這程序可以是一κ÷苑
              (apostrophe)或者也可以是引用字元。

       \b     代表一退位(backspace)字元。

       \c     抑制在回覆字串結尾的新列(newline)字元。            這是送出]有返
              回字元尾隨的字串的唯一方法。它必碓谒统鲎执慕Y尾。例
              如,這程序 hello

       \d     延遲一秒纭T程式使用最長延遲橐幻氲        sleep(1)       。(在
              期待字串中o效。)

       \K     插入一中啵ㄔ谄诖执衞效。)

       \n     送出一新列(newline)或Q行(linefeed)字元。

       \N     送出一空字元(null     character)。同拥某绦蚩梢杂             代
              替。(在期待字串中o效。)

       \p     和R恍《蝦間。延遲 1/10 秒。(在期待字串中o效。)

       \q     抑制字串往     SYSLOG     n案。     ??????     字串被愉到自己的
              空間。(在期待字串中o效。)

       \r     魉突蚱诖籆架返回(字元)

       \s     代替字串中的空白。這可以用在不钜冒瞻椎淖执畆。'HI   TIM'
              以及 HI\sTIM 是相同的。

       \t     魉突蚱诖欢ㄎ(tab)字元。

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

       \\     魉突蚱诖坏剐本(backslash)字元。

       \ddd   诉M位底     (ddd)     折疊(collapse)成我坏    ASCII    字元K
              ⑵渌统觥#承┳衷谄诖执衞效。)

       ^C     替Q含有以 C 代表之控制字元的程序。例如,字元  DC1(17)   是以  ^Q
              表示。(某些字元在期待字串中o效。)

ENVIRONMENT VARIABLES

       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 environment variable to substitute. If the
       substition fails, because the requested  environment  variable  is  not
       set, nothing is replaced for the variable.

TERMINATION CODES

       The chat program will terminate with the following completion codes.

       0      The  normal  termination of the program. This indicates that the
              script was executed without error to the normal conclusion.

       1      One or more of the parameters are invalid or  an  expect  string
              was  too large for the internal buffers. This indicates that the
              program as not properly executed.

       2      An error occurred during the execution of the program. This  may
              be  due  to a read or write operation failing for some reason or
              chat receiving a signal such as SIGINT.

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

       4      The first string marked as an ABORT condition occurred.

       5      The second string marked as an ABORT condition occurred.

       6      The third string marked as an ABORT condition occurred.

       7      The fourth string marked as an ABORT condition occurred.

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

 SEE ALSO
       關於  chat  指令稿的其它資涌梢栽 UUCP 文件裡找到。chat 指令稿 的概念由
       uucico 程式所使用的指令稿淼摹

       uucico(1), uucp(1)

COPYRIGHT

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

[asdchen <asdchen@pc2.hinet.net>

[1995/09/30

linuxan:
       http://cmpp.linuxforum.net