mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
mdocify the chat(8) manual page.
Reviewed by: brueffer
This commit is contained in:
parent
6643637f67
commit
c664bd4634
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=240304
|
@ -1,41 +1,81 @@
|
||||||
.\" -*- nroff -*-
|
|
||||||
.\" manual page [] for chat 1.8
|
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\" SH section heading
|
.Dd September 10, 2012
|
||||||
.\" SS subsection heading
|
.Dt CHAT 8
|
||||||
.\" LP paragraph
|
.Os
|
||||||
.\" IP indented paragraph
|
.Sh NAME
|
||||||
.\" TP hanging label
|
.Nm chat
|
||||||
.TH CHAT 8 "27 Sep 1997" "Chat Version 1.17"
|
.Nd Automated conversational script with a modem
|
||||||
.SH NAME
|
.Sh SYNOPSIS
|
||||||
chat \- Automated conversational script with a modem
|
.Nm
|
||||||
.SH SYNOPSIS
|
.Op Fl eSsVv
|
||||||
.B chat
|
.Op Fl f Ar chat-file
|
||||||
[
|
.Op Fl r Ar report-file
|
||||||
.I options
|
.Op Fl T Ar phone-number
|
||||||
]
|
.Op Fl t Ar timeout
|
||||||
.I script
|
.Op Fl U Ar phone-number2
|
||||||
.SH DESCRIPTION
|
.Op Ar script
|
||||||
.LP
|
.Sh DESCRIPTION
|
||||||
The \fIchat\fR program defines a conversational exchange between the
|
The
|
||||||
|
.Nm
|
||||||
|
program defines a conversational exchange between the
|
||||||
computer and the modem.
|
computer and the modem.
|
||||||
Its primary purpose is to establish the
|
Its primary purpose is to establish the
|
||||||
connection between the Point-to-Point Protocol Daemon (\fIpppd\fR) and
|
connection between the Point-to-Point Protocol Daemon
|
||||||
the remote's \fIpppd\fR process.
|
.Pq pppd
|
||||||
.SH OPTIONS
|
and the remote's pppd process.
|
||||||
.TP
|
.Sh OPTIONS
|
||||||
.B -f \fI<chat file>
|
.Bl -tag -width indent
|
||||||
Read the chat script from the chat \fIfile\fR.
|
.It Fl 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
|
||||||
|
.Em stderr .
|
||||||
|
.It Fl f Ar chat-file
|
||||||
|
Read the chat script from the chat file.
|
||||||
The use of this option
|
The use of this option
|
||||||
is mutually exclusive with the chat script parameters.
|
is mutually exclusive with the chat script parameters.
|
||||||
The user must
|
The user must
|
||||||
have read access to the file.
|
have read access to the file.
|
||||||
Multiple lines are permitted in the
|
Multiple lines are permitted in the file.
|
||||||
file.
|
|
||||||
Space or horizontal tab characters should be used to separate
|
Space or horizontal tab characters should be used to separate
|
||||||
the strings.
|
the strings.
|
||||||
.TP
|
.It Fl r Ar report-file
|
||||||
.B -t \fI<timeout>
|
Set the file for output of the report strings.
|
||||||
|
If you use the keyword
|
||||||
|
.Dv REPORT ,
|
||||||
|
the resulting strings are written to this file.
|
||||||
|
If this
|
||||||
|
option is not used and you still use
|
||||||
|
.Dv REPORT
|
||||||
|
keywords, the
|
||||||
|
.Pa stderr
|
||||||
|
file is used for the report strings.
|
||||||
|
.It Fl S
|
||||||
|
Do not use
|
||||||
|
.Xr syslog 3 .
|
||||||
|
By default, error messages are sent to
|
||||||
|
.Xr syslog 3 .
|
||||||
|
The use of
|
||||||
|
.Fl S
|
||||||
|
will prevent both log messages from
|
||||||
|
.Fl v
|
||||||
|
and error messages from being sent to
|
||||||
|
.Xr syslog 3 .
|
||||||
|
.It Fl s
|
||||||
|
Use
|
||||||
|
.Em stderr .
|
||||||
|
All log messages from
|
||||||
|
.Fl v
|
||||||
|
and all error messages will be
|
||||||
|
sent to
|
||||||
|
.Em stderr .
|
||||||
|
.It Fl T Ar phone-number
|
||||||
|
Pass in an arbitrary string, usually a phone number, that will be
|
||||||
|
substituted for the \\T substitution metacharacter in a send string.
|
||||||
|
.It Fl t Ar timeout
|
||||||
Set the timeout for the expected string to be received.
|
Set the timeout for the expected string to be received.
|
||||||
If the string
|
If the string
|
||||||
is not received within the time limit then the reply string is not
|
is not received within the time limit then the reply string is not
|
||||||
|
@ -43,96 +83,81 @@ sent.
|
||||||
An alternate reply may be sent or the script will fail if there
|
An alternate reply may be sent or the script will fail if there
|
||||||
is no alternate reply string.
|
is no alternate reply string.
|
||||||
A failed script will cause the
|
A failed script will cause the
|
||||||
\fIchat\fR program to terminate with a non-zero error code.
|
.Nm
|
||||||
.TP
|
program to terminate with a non-zero error code.
|
||||||
.B -r \fI<report file>
|
.It Fl U Ar phone-number2
|
||||||
Set the file for output of the report strings.
|
|
||||||
If you use the keyword
|
|
||||||
\fIREPORT\fR, the resulting strings are written to this file.
|
|
||||||
If this
|
|
||||||
option is not used and you still use \fIREPORT\fR keywords, the
|
|
||||||
\fIstderr\fR file is used for the report strings.
|
|
||||||
.TP
|
|
||||||
.B -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 \fIECHO\fR
|
|
||||||
keyword.
|
|
||||||
When echoing is enabled, all output from the modem is echoed
|
|
||||||
to \fIstderr\fR.
|
|
||||||
.TP
|
|
||||||
.B -v
|
|
||||||
Request that the \fIchat\fR script be executed in a verbose mode.
|
|
||||||
The
|
|
||||||
\fIchat\fR program will then log the execution 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
|
|
||||||
.IR syslog (3);
|
|
||||||
the logging method may be altered with the -S and -s flags.
|
|
||||||
Logging is
|
|
||||||
done to the \fIlocal2\fR facility at level \fIinfo\fR for verbose tracing
|
|
||||||
and level \fIerr\fR for some errors.
|
|
||||||
.TP
|
|
||||||
.B -V
|
|
||||||
Request that the \fIchat\fR script be executed in a stderr verbose
|
|
||||||
mode.
|
|
||||||
The \fIchat\fR 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.
|
|
||||||
.TP
|
|
||||||
.B -s
|
|
||||||
Use stderr. All log messages from '-v' and all error messages will be
|
|
||||||
sent to stderr.
|
|
||||||
.TP
|
|
||||||
.B -S
|
|
||||||
Do not use
|
|
||||||
.IR syslog (3).
|
|
||||||
By default, error messages are sent to
|
|
||||||
.IR syslog (3).
|
|
||||||
The use of -S will prevent both log messages from '-v' and
|
|
||||||
error messages from being sent to
|
|
||||||
.IR syslog (3).
|
|
||||||
.TP
|
|
||||||
.B -T \fI<phone number>
|
|
||||||
Pass in an arbitrary string, usually a phone number, that will be
|
|
||||||
substituted for the \\T substitution metacharacter in a send string.
|
|
||||||
.TP
|
|
||||||
.B -U \fI<phone number 2>
|
|
||||||
Pass in a second string, usually a phone number, that will be
|
Pass in a second string, usually a phone number, that will be
|
||||||
substituted for the \\U substitution metacharacter in a send string.
|
substituted for the \\U substitution metacharacter in a send string.
|
||||||
This is useful when dialing an ISDN terminal adapter that requires two
|
This is useful when dialing an ISDN terminal adapter that requires two
|
||||||
numbers.
|
numbers.
|
||||||
.TP
|
.It Fl V
|
||||||
.B script
|
Request that the
|
||||||
If the script is not specified in a file with the \fI-f\fR option then
|
.Nm
|
||||||
the script is included as parameters to the \fIchat\fR program.
|
script be executed in a
|
||||||
.SH CHAT SCRIPT
|
.Em stderr
|
||||||
.LP
|
verbose mode.
|
||||||
The \fIchat\fR script defines the communications.
|
The
|
||||||
.LP
|
.Nm
|
||||||
|
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.
|
||||||
|
.It Fl v
|
||||||
|
Request that the
|
||||||
|
.Nm
|
||||||
|
script be executed in a verbose mode.
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
program will then log the execution 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
|
||||||
|
.Xr syslog 3 ;
|
||||||
|
the logging method may be altered with the
|
||||||
|
.Fl S
|
||||||
|
and
|
||||||
|
.Fl s
|
||||||
|
flags.
|
||||||
|
Logging is done to the
|
||||||
|
.Em local2
|
||||||
|
facility at level
|
||||||
|
.Em info
|
||||||
|
for verbose tracing and level
|
||||||
|
.Em err
|
||||||
|
for some errors.
|
||||||
|
.El
|
||||||
|
.Sh CHAT SCRIPT
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
script defines the communications.
|
||||||
A script consists of one or more "expect-send" pairs of strings,
|
A script consists of one or more "expect-send" pairs of strings,
|
||||||
separated by spaces, with an optional "subexpect-subsend" string pair,
|
separated by spaces, with an optional "subexpect-subsend" string pair,
|
||||||
separated by a dash as in the following example:
|
separated by a dash as in the following example:
|
||||||
.IP
|
.Pp
|
||||||
ogin:-BREAK-ogin: ppp ssword: hello2u2
|
.D1 ogin:-BREAK-ogin: ppp ssword: hello2u2
|
||||||
.LP
|
.Pp
|
||||||
This line indicates that the \fIchat\fR program should expect the string
|
This line indicates that the
|
||||||
"ogin:". If it fails to receive a login prompt within the time interval
|
.Nm
|
||||||
|
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
|
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
|
string "ogin:".
|
||||||
|
If the first "ogin:" is received then the break sequence is
|
||||||
not generated.
|
not generated.
|
||||||
.LP
|
.Pp
|
||||||
Once it received the login prompt the \fIchat\fR program will send the
|
Once it received the login prompt the
|
||||||
string ppp and then expect the prompt "ssword:". When it receives the
|
.Nm
|
||||||
|
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.
|
prompt for the password, it will send the password hello2u2.
|
||||||
.LP
|
.Pp
|
||||||
A carriage return is normally sent following the reply string.
|
A carriage return is normally sent following the reply string.
|
||||||
It is not
|
It is not
|
||||||
expected in the "expect" string unless it is specifically requested by using
|
expected in the "expect" string unless it is specifically requested by using
|
||||||
the \\r character sequence.
|
the \\r character sequence.
|
||||||
.LP
|
.Pp
|
||||||
The expect sequence should contain only what is needed to identify the
|
The expect sequence should contain only what is needed to identify the
|
||||||
string.
|
string.
|
||||||
Since it is normally stored on a disk file, it should not contain
|
Since it is normally stored on a disk file, it should not contain
|
||||||
|
@ -140,29 +165,30 @@ variable information.
|
||||||
It is generally not acceptable to look for time
|
It is generally not acceptable to look for time
|
||||||
strings, network identification strings, or other variable pieces of data as
|
strings, network identification strings, or other variable pieces of data as
|
||||||
an expect string.
|
an expect string.
|
||||||
.LP
|
.Pp
|
||||||
To help correct for characters which may be corrupted during the initial
|
To help correct for characters which may be corrupted during the initial
|
||||||
sequence, look for the string "ogin:" rather than "login:". It is possible
|
sequence, look for the string "ogin:" rather than "login:".
|
||||||
|
It is possible
|
||||||
that the leading "l" character may be received in error and you may never
|
that the leading "l" character may be received in error and you may never
|
||||||
find the string even though it was sent by the system.
|
find the string even though it was sent by the system.
|
||||||
For this reason,
|
For this reason,
|
||||||
scripts look for "ogin:" rather than "login:" and "ssword:" rather than
|
scripts look for "ogin:" rather than "login:" and "ssword:" rather than
|
||||||
"password:".
|
"password:".
|
||||||
.LP
|
.Pp
|
||||||
A very simple script might look like this:
|
A very simple script might look like this:
|
||||||
.IP
|
.Pp
|
||||||
ogin: ppp ssword: hello2u2
|
.D1 ogin: ppp ssword: hello2u2
|
||||||
.LP
|
.Pp
|
||||||
In other words, expect ....ogin:, send ppp, expect ...ssword:, send hello2u2.
|
In other words, expect ....ogin:, send ppp, expect ...ssword:, send hello2u2.
|
||||||
.LP
|
.Pp
|
||||||
In actual practice, simple scripts are rare.
|
In actual practice, simple scripts are rare.
|
||||||
At the vary least, you
|
At the vary least, you
|
||||||
should include sub-expect sequences should the original string not be
|
should include sub-expect sequences should the original string not be
|
||||||
received.
|
received.
|
||||||
For example, consider the following script:
|
For example, consider the following script:
|
||||||
.IP
|
.Pp
|
||||||
ogin:--ogin: ppp ssword: hello2u2
|
.D1 ogin:--ogin: ppp ssword: hello2u2
|
||||||
.LP
|
.Pp
|
||||||
This would be a better script than the simple one used earlier.
|
This would be a better script than the simple one used earlier.
|
||||||
This would look
|
This would look
|
||||||
for the same login: prompt, however, if one was not received, a single
|
for the same login: prompt, however, if one was not received, a single
|
||||||
|
@ -170,123 +196,135 @@ return sequence is sent and then it will look for login: again.
|
||||||
Should line
|
Should line
|
||||||
noise obscure the first login prompt then sending the empty line will
|
noise obscure the first login prompt then sending the empty line will
|
||||||
usually generate a login prompt again.
|
usually generate a login prompt again.
|
||||||
.SH COMMENTS
|
.Sh COMMENTS
|
||||||
Comments can be embedded in the chat script.
|
Comments can be embedded in the chat script.
|
||||||
A comment is a line which
|
A comment is a line which
|
||||||
starts with the \fB#\fR (hash) character in column 1. Such comment
|
starts with the # (hash) character in column 1.
|
||||||
|
Such comment
|
||||||
lines are just ignored by the chat program.
|
lines are just ignored by the chat program.
|
||||||
If a '#' character is to
|
If a '#' character is to
|
||||||
be expected as the first character of the expect sequence, you should
|
be expected as the first character of the expect sequence, you should
|
||||||
quote the expect string.
|
quote the expect string.
|
||||||
If you want to wait for a prompt that starts with a # (hash)
|
If you want to wait for a prompt that starts with a # (hash)
|
||||||
character, you would have to write something like this:
|
character, you would have to write something like this:
|
||||||
.IP
|
.Bd -literal -offset indent
|
||||||
# Now wait for the prompt and send logout string
|
# Now wait for the prompt and send logout string
|
||||||
.br
|
|
||||||
\&'# ' logout
|
\&'# ' logout
|
||||||
.LP
|
.Ed
|
||||||
|
.Sh ABORT STRINGS
|
||||||
.SH ABORT STRINGS
|
|
||||||
Many modems will report the status of the call as a string.
|
Many modems will report the status of the call as a string.
|
||||||
These
|
These strings may be
|
||||||
strings may be \fBCONNECTED\fR or \fBNO CARRIER\fR or \fBBUSY\fR.
|
.Dv CONNECTED
|
||||||
It
|
or
|
||||||
is often desirable to terminate the script should the modem fail to
|
.Dv NO CARRIER
|
||||||
|
or
|
||||||
|
.Dv BUSY .
|
||||||
|
It is often desirable to terminate the script should the modem fail to
|
||||||
connect to the remote.
|
connect to the remote.
|
||||||
The difficulty is that a script would not know
|
The difficulty is that a script would not know
|
||||||
exactly which modem string it may receive.
|
exactly which modem string it may receive.
|
||||||
On one attempt, it may
|
On one attempt, it may receive
|
||||||
receive \fBBUSY\fR while the next time it may receive \fBNO CARRIER\fR.
|
.Dv BUSY
|
||||||
.LP
|
while the next time it may receive
|
||||||
These "abort" strings may be specified in the script using the \fIABORT\fR
|
.Dv NO CARRIER .
|
||||||
|
.Pp
|
||||||
|
These "abort" strings may be specified in the script using the ABORT
|
||||||
sequence.
|
sequence.
|
||||||
It is written in the script as in the following example:
|
It is written in the script as in the following example:
|
||||||
.IP
|
.Pp
|
||||||
ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
|
.D1 ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
|
||||||
.LP
|
.Pp
|
||||||
This sequence will expect nothing; and then send the string ATZ.
|
This sequence will expect nothing; and then send the string ATZ.
|
||||||
The
|
The expected response to this is the string
|
||||||
expected response to this is the string \fIOK\fR.
|
.Dv OK .
|
||||||
When it receives \fIOK\fR,
|
When it receives
|
||||||
|
.Dv OK ,
|
||||||
the string ATDT5551212 to dial the telephone.
|
the string ATDT5551212 to dial the telephone.
|
||||||
The expected string is
|
The expected string is
|
||||||
\fICONNECT\fR.
|
.Dv CONNECT .
|
||||||
If the string \fICONNECT\fR is received the remainder of the
|
If the string
|
||||||
|
.Dv CONNECT
|
||||||
|
is received the remainder of the
|
||||||
script is executed.
|
script is executed.
|
||||||
However, should the modem find a busy telephone, it will
|
However, should the modem find a busy telephone, it will
|
||||||
send the string \fIBUSY\fR.
|
send the string
|
||||||
|
.Dv BUSY .
|
||||||
This will cause the string to match the abort
|
This will cause the string to match the abort
|
||||||
character sequence.
|
character sequence.
|
||||||
The script will then fail because it found a match to
|
The script will then fail because it found a match to
|
||||||
the abort string.
|
the abort string.
|
||||||
If it received the string \fINO CARRIER\fR, it will abort
|
If it received the string
|
||||||
|
.Dv NO CARRIER ,
|
||||||
|
it will abort
|
||||||
for the same reason.
|
for the same reason.
|
||||||
Either string may be received.
|
Either string may be received.
|
||||||
Either string will
|
Either string will
|
||||||
terminate the \fIchat\fR script.
|
terminate the
|
||||||
.SH CLR_ABORT STRINGS
|
.Nm
|
||||||
This sequence allows for clearing previously set \fBABORT\fR strings.
|
script.
|
||||||
\fBABORT\fR strings are kept in an array of a pre-determined size (at
|
.Sh CLR_ABORT STRINGS
|
||||||
compilation time); \fBCLR_ABORT\fR will reclaim the space for cleared
|
This sequence allows for clearing previously set
|
||||||
|
.Dv ABORT
|
||||||
|
strings.
|
||||||
|
.Dv 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.
|
entries so that new strings can use that space.
|
||||||
.SH SAY STRINGS
|
.Sh SAY STRINGS
|
||||||
The \fBSAY\fR directive allows the script to send strings to the user
|
The
|
||||||
at the terminal via standard error. If \fBchat\fR is being run by
|
.Dv SAY
|
||||||
|
directive allows the script to send strings to the user
|
||||||
|
at the terminal via standard error.
|
||||||
|
If
|
||||||
|
.Nm
|
||||||
|
is being run by
|
||||||
pppd, and pppd is running as a daemon (detached from its controlling
|
pppd, and pppd is running as a daemon (detached from its controlling
|
||||||
terminal), standard error will normally be redirected to the file
|
terminal), standard error will normally be redirected to the file
|
||||||
/etc/ppp/connect-errors.
|
.Pa /etc/ppp/connect-errors .
|
||||||
.LP
|
.Pp
|
||||||
\fBSAY\fR strings must be enclosed in single or double quotes.
|
.Dv SAY
|
||||||
If
|
strings must be enclosed in single or double quotes.
|
||||||
carriage return and line feed are needed in the string to be output,
|
If carriage return and line feed are needed in the string to be output,
|
||||||
you must explicitly add them to your string.
|
you must explicitly add them to your string.
|
||||||
.LP
|
.Pp
|
||||||
The SAY strings could be used to give progress messages in sections of
|
The
|
||||||
|
.Dv 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
|
the script where you want to have 'ECHO OFF' but still let the user
|
||||||
know what is happening. An example is:
|
know what is happening. An example is:
|
||||||
.IP
|
.Bd -literal -offset indent
|
||||||
ABORT BUSY
|
ABORT BUSY
|
||||||
.br
|
|
||||||
ECHO OFF
|
ECHO OFF
|
||||||
.br
|
|
||||||
SAY "Dialling your ISP...\\n"
|
SAY "Dialling your ISP...\\n"
|
||||||
.br
|
|
||||||
\&'' ATDT5551212
|
\&'' ATDT5551212
|
||||||
.br
|
|
||||||
TIMEOUT 120
|
TIMEOUT 120
|
||||||
.br
|
|
||||||
SAY "Waiting up to 2 minutes for connection ... "
|
SAY "Waiting up to 2 minutes for connection ... "
|
||||||
.br
|
|
||||||
CONNECT ''
|
CONNECT ''
|
||||||
.br
|
|
||||||
SAY "Connected, now logging in ...\\n"
|
SAY "Connected, now logging in ...\\n"
|
||||||
.br
|
|
||||||
ogin: account
|
ogin: account
|
||||||
.br
|
|
||||||
ssword: pass
|
ssword: pass
|
||||||
.br
|
$ SAY "Logged in OK ...\\n" \fIetc ...\fR
|
||||||
$ \c
|
.Ed
|
||||||
SAY "Logged in OK ...\\n"
|
.Pp
|
||||||
\fIetc ...\fR
|
This sequence will only present the
|
||||||
.LP
|
.Dv SAY
|
||||||
This sequence will only present the SAY strings to the user and all
|
strings to the user and all
|
||||||
the details of the script will remain hidden.
|
the details of the script will remain hidden.
|
||||||
For example, if the
|
For example, if the
|
||||||
above script works, the user will see:
|
above script works, the user will see:
|
||||||
.IP
|
.Bd -literal -offset indent
|
||||||
Dialling your ISP...
|
Dialling your ISP...
|
||||||
.br
|
|
||||||
Waiting up to 2 minutes for connection ... Connected, now logging in ...
|
Waiting up to 2 minutes for connection ... Connected, now logging in ...
|
||||||
.br
|
|
||||||
Logged in OK ...
|
Logged in OK ...
|
||||||
.LP
|
.Ed
|
||||||
|
.Sh REPORT STRINGS
|
||||||
.SH REPORT STRINGS
|
A report string is similar to the
|
||||||
A \fBreport\fR string is similar to the ABORT string.
|
.Dv ABORT
|
||||||
|
string.
|
||||||
The difference
|
The difference
|
||||||
is that the strings, and all characters to the next control character
|
is that the strings, and all characters to the next control character
|
||||||
such as a carriage return, are written to the report file.
|
such as a carriage return, are written to the report file.
|
||||||
.LP
|
.Pp
|
||||||
The report strings may be used to isolate the transmission rate of the
|
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.
|
modem's connect string and return the value to the chat user.
|
||||||
The
|
The
|
||||||
|
@ -295,281 +333,312 @@ other string processing such as looking for the expect string.
|
||||||
The use
|
The use
|
||||||
of the same string for a report and abort sequence is probably not
|
of the same string for a report and abort sequence is probably not
|
||||||
very useful, however, it is possible.
|
very useful, however, it is possible.
|
||||||
.LP
|
.Pp
|
||||||
The report strings to no change the completion code of the program.
|
The report strings to no change the completion code of the program.
|
||||||
.LP
|
.Pp
|
||||||
These "report" strings may be specified in the script using the \fIREPORT\fR
|
These "report" strings may be specified in the script using the
|
||||||
|
.Dv REPORT
|
||||||
sequence.
|
sequence.
|
||||||
It is written in the script as in the following example:
|
It is written in the script as in the following example:
|
||||||
.IP
|
.Pp
|
||||||
REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
|
.D1 REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
|
||||||
.LP
|
.Pp
|
||||||
This sequence will expect nothing; and then send the string
|
This sequence will expect nothing; and then send the string
|
||||||
ATDT5551212 to dial the telephone.
|
ATDT5551212 to dial the telephone.
|
||||||
The expected string is
|
The expected string is
|
||||||
\fICONNECT\fR.
|
.Dv CONNECT .
|
||||||
If the string \fICONNECT\fR is received the remainder
|
If the string
|
||||||
|
.Dv CONNECT
|
||||||
|
is received the remainder
|
||||||
of the script is executed.
|
of the script is executed.
|
||||||
In addition the program will write to the
|
In addition the program will write to the
|
||||||
expect-file the string "CONNECT" plus any characters which follow it
|
expect-file the string "CONNECT" plus any characters which follow it
|
||||||
such as the connection rate.
|
such as the connection rate.
|
||||||
.SH CLR_REPORT STRINGS
|
.Sh CLR_REPORT STRINGS
|
||||||
This sequence allows for clearing previously set \fBREPORT\fR strings.
|
This sequence allows for clearing previously set
|
||||||
\fBREPORT\fR strings are kept in an array of a pre-determined size (at
|
.Dv REPORT
|
||||||
compilation time); \fBCLR_REPORT\fR will reclaim the space for cleared
|
strings.
|
||||||
|
.Dv 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.
|
entries so that new strings can use that space.
|
||||||
.SH ECHO
|
.Sh ECHO
|
||||||
The echo options controls whether the output from the modem is echoed
|
The echo options controls whether the output from the modem is echoed
|
||||||
to \fIstderr\fR.
|
to
|
||||||
This option may be set with the \fI-e\fR option, but
|
.Em stderr .
|
||||||
it can also be controlled by the \fIECHO\fR keyword.
|
This option may be set with the
|
||||||
|
.Fl e
|
||||||
|
option, but
|
||||||
|
it can also be controlled by the
|
||||||
|
.Dv ECHO
|
||||||
|
keyword.
|
||||||
The "expect-send"
|
The "expect-send"
|
||||||
pair \fIECHO\fR \fION\fR enables echoing, and \fIECHO\fR \fIOFF\fR
|
pair
|
||||||
|
.Dv ECHO ON
|
||||||
|
enables echoing, and
|
||||||
|
.Dv ECHO OFF
|
||||||
disables it.
|
disables it.
|
||||||
With this keyword you can select which parts of the
|
With this keyword you can select which parts of the
|
||||||
conversation should be visible.
|
conversation should be visible.
|
||||||
For instance, with the following
|
For instance, with the following
|
||||||
script:
|
script:
|
||||||
.IP
|
.Bd -literal -offset indent
|
||||||
ABORT 'BUSY'
|
ABORT 'BUSY'
|
||||||
.br
|
|
||||||
ABORT 'NO CARRIER'
|
ABORT 'NO CARRIER'
|
||||||
.br
|
|
||||||
\&'' ATZ
|
\&'' ATZ
|
||||||
.br
|
|
||||||
OK\\r\\n ATD1234567
|
OK\\r\\n ATD1234567
|
||||||
.br
|
|
||||||
\\r\\n \\c
|
\\r\\n \\c
|
||||||
.br
|
|
||||||
ECHO ON
|
ECHO ON
|
||||||
.br
|
|
||||||
CONNECT \\c
|
CONNECT \\c
|
||||||
.br
|
|
||||||
ogin: account
|
ogin: account
|
||||||
.LP
|
.Ed
|
||||||
|
.Pp
|
||||||
all output resulting from modem configuration and dialing is not visible,
|
all output resulting from modem configuration and dialing is not visible,
|
||||||
but starting with the \fICONNECT\fR (or \fIBUSY\fR) message, everything
|
but starting with the
|
||||||
|
.Dv CONNECT
|
||||||
|
or
|
||||||
|
.Dv BUSY
|
||||||
|
message, everything
|
||||||
will be echoed.
|
will be echoed.
|
||||||
.SH HANGUP
|
.Sh HANGUP
|
||||||
The HANGUP options control whether a modem hangup should be considered
|
The
|
||||||
as an error or not. This option is useful in scripts for dialling
|
.Dv HANGUP
|
||||||
systems which will hang up and call your system back. The HANGUP
|
options control whether a modem hangup should be considered
|
||||||
options can be \fBON\fR or \fBOFF\fR.
|
as an error or not.
|
||||||
.br
|
This option is useful in scripts for dialling
|
||||||
When HANGUP is set OFF and the modem hangs up (e.g., after the first
|
systems which will hang up and call your system back.
|
||||||
stage of logging in to a callback system), \fBchat\fR will continue
|
The
|
||||||
|
.Dv HANGUP
|
||||||
|
options can be
|
||||||
|
.Dv ON
|
||||||
|
or
|
||||||
|
.Dv OFF .
|
||||||
|
.Pp
|
||||||
|
When
|
||||||
|
.Dv HANGUP
|
||||||
|
is set
|
||||||
|
.Dv OFF
|
||||||
|
and the modem hangs up (e.g., after the first
|
||||||
|
stage of logging in to a callback system),
|
||||||
|
.Nm
|
||||||
|
will continue
|
||||||
running the script (e.g., waiting for the incoming call and second
|
running the script (e.g., waiting for the incoming call and second
|
||||||
stage login prompt). As soon as the incoming call is connected, you
|
stage login prompt).
|
||||||
should use the \fBHANGUP ON\fR directive to reinstall normal hang up
|
As soon as the incoming call is connected, you
|
||||||
signal behavior. Here is a (simple) example script:
|
should use the
|
||||||
.IP
|
.Dv HANGUP ON
|
||||||
|
directive to reinstall normal hang up
|
||||||
|
signal behavior.
|
||||||
|
Here is a (simple) example script:
|
||||||
|
.Bd -literal -offset indent
|
||||||
ABORT 'BUSY'
|
ABORT 'BUSY'
|
||||||
.br
|
|
||||||
\&'' ATZ
|
\&'' ATZ
|
||||||
.br
|
|
||||||
OK\\r\\n ATD1234567
|
OK\\r\\n ATD1234567
|
||||||
.br
|
|
||||||
\\r\\n \\c
|
\\r\\n \\c
|
||||||
.br
|
|
||||||
CONNECT \\c
|
CONNECT \\c
|
||||||
.br
|
|
||||||
\&'Callback login:' call_back_ID
|
\&'Callback login:' call_back_ID
|
||||||
.br
|
|
||||||
HANGUP OFF
|
HANGUP OFF
|
||||||
.br
|
|
||||||
ABORT "Bad Login"
|
ABORT "Bad Login"
|
||||||
.br
|
|
||||||
\&'Callback Password:' Call_back_password
|
\&'Callback Password:' Call_back_password
|
||||||
.br
|
|
||||||
TIMEOUT 120
|
TIMEOUT 120
|
||||||
.br
|
|
||||||
CONNECT \\c
|
CONNECT \\c
|
||||||
.br
|
|
||||||
HANGUP ON
|
HANGUP ON
|
||||||
.br
|
|
||||||
ABORT "NO CARRIER"
|
ABORT "NO CARRIER"
|
||||||
.br
|
|
||||||
ogin:--BREAK--ogin: real_account
|
ogin:--BREAK--ogin: real_account
|
||||||
.br
|
|
||||||
\fIetc ...\fR
|
\fIetc ...\fR
|
||||||
.SH TIMEOUT
|
.Ed
|
||||||
|
.Sh TIMEOUT
|
||||||
The initial timeout value is 45 seconds.
|
The initial timeout value is 45 seconds.
|
||||||
This may be changed using the \fB-t\fR
|
This may be changed using the
|
||||||
|
.Fl t
|
||||||
parameter.
|
parameter.
|
||||||
.LP
|
.Pp
|
||||||
To change the timeout value for the next expect string, the following
|
To change the timeout value for the next expect string, the following
|
||||||
example may be used:
|
example may be used:
|
||||||
.IP
|
.Bd -literal -offset indent
|
||||||
ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
|
ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
|
||||||
.LP
|
.Ed
|
||||||
|
.Pp
|
||||||
This will change the timeout to 10 seconds when it expects the login:
|
This will change the timeout to 10 seconds when it expects the login:
|
||||||
prompt.
|
prompt.
|
||||||
The timeout is then changed to 5 seconds when it looks for the
|
The timeout is then changed to 5 seconds when it looks for the
|
||||||
password prompt.
|
password prompt.
|
||||||
.LP
|
.Pp
|
||||||
The timeout, once changed, remains in effect until it is changed again.
|
The timeout, once changed, remains in effect until it is changed again.
|
||||||
.SH SENDING EOT
|
.Sh SENDING EOT
|
||||||
The special reply string of \fIEOT\fR indicates that the chat program
|
The special reply string of
|
||||||
should send an EOT character to the remote.
|
.Dv EOT
|
||||||
|
indicates that the chat program
|
||||||
|
should send an
|
||||||
|
.Dv EOT
|
||||||
|
character to the remote.
|
||||||
This is normally the
|
This is normally the
|
||||||
End-of-file character sequence.
|
End-of-file character sequence.
|
||||||
A return character is not sent
|
A return character is not sent
|
||||||
following the EOT.
|
following the
|
||||||
.LP
|
.Dv EOT .
|
||||||
The EOT sequence may be embedded into the send string using the
|
.Pp
|
||||||
sequence \fI^D\fR.
|
The
|
||||||
.SH GENERATING BREAK
|
.Dv EOT
|
||||||
The special reply string of \fIBREAK\fR will cause a break condition
|
sequence may be embedded into the send string using the
|
||||||
|
sequence ^D.
|
||||||
|
.Sh GENERATING BREAK
|
||||||
|
The special reply string of
|
||||||
|
.Dv BREAK
|
||||||
|
will cause a break condition
|
||||||
to be sent.
|
to be sent.
|
||||||
The break is a special signal on the transmitter.
|
The break is a special signal on the transmitter.
|
||||||
The
|
The
|
||||||
normal processing on the receiver is to change the transmission rate.
|
normal processing on the receiver is to change the transmission rate.
|
||||||
It may be used to cycle through the available transmission rates on
|
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 remote until you are able to receive a valid login prompt.
|
||||||
.LP
|
.Pp
|
||||||
The break sequence may be embedded into the send string using the
|
The break sequence may be embedded into the send string using the
|
||||||
\fI\\K\fR sequence.
|
\fI\\K\fR sequence.
|
||||||
.SH ESCAPE SEQUENCES
|
.Sh ESCAPE SEQUENCES
|
||||||
The expect and reply strings may contain escape sequences.
|
The expect and reply strings may contain escape sequences.
|
||||||
All of the
|
All of the
|
||||||
sequences are legal in the reply string.
|
sequences are legal in the reply string.
|
||||||
Many are legal in the expect.
|
Many are legal in the expect.
|
||||||
Those which are not valid in the expect sequence are so indicated.
|
Those which are not valid in the expect sequence are so indicated.
|
||||||
.TP
|
.Bl -tag -width indent
|
||||||
.B ''
|
.It ''
|
||||||
Expects or sends a null string.
|
Expects or sends a null string.
|
||||||
If you send a null string then it will still
|
If you send a null string then it will still
|
||||||
send the return character.
|
send the return character.
|
||||||
This sequence may either be a pair of apostrophe
|
This sequence may either be a pair of apostrophe
|
||||||
or quote characters.
|
or quote characters.
|
||||||
.TP
|
.It \\\\b
|
||||||
.B \\\\b
|
|
||||||
represents a backspace character.
|
represents a backspace character.
|
||||||
.TP
|
.It \\\\c
|
||||||
.B \\\\c
|
|
||||||
Suppresses the newline at the end of the reply string.
|
Suppresses the newline at the end of the reply string.
|
||||||
This is the only
|
This is the only
|
||||||
method to send a string without a trailing return character.
|
method to send a string without a trailing return character.
|
||||||
It must
|
It must
|
||||||
be at the end of the send string.
|
be at the end of the send string.
|
||||||
For example,
|
For example,
|
||||||
the sequence hello\\c will simply send the characters h, e, l, l, o.
|
the sequence hello\\c will simply send the characters h, e, l, l, o
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\d
|
||||||
.B \\\\d
|
|
||||||
Delay for one second.
|
Delay for one second.
|
||||||
The program uses sleep(1) which will delay to a
|
The program uses sleep(1) which will delay to a
|
||||||
maximum of one second.
|
maximum of one second
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\K
|
||||||
.B \\\\K
|
Insert a
|
||||||
Insert a BREAK
|
.Dv BREAK
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\n
|
||||||
.B \\\\n
|
|
||||||
Send a newline or linefeed character.
|
Send a newline or linefeed character.
|
||||||
.TP
|
.It \\\\N
|
||||||
.B \\\\N
|
|
||||||
Send a null character.
|
Send a null character.
|
||||||
The same sequence may be represented by \\0.
|
The same sequence may be represented by \\0
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\p
|
||||||
.B \\\\p
|
|
||||||
Pause for a fraction of a second.
|
Pause for a fraction of a second.
|
||||||
The delay is 1/10th of a second.
|
The delay is 1/10th of a second
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\q
|
||||||
.B \\\\q
|
|
||||||
Suppress writing the string to
|
Suppress writing the string to
|
||||||
.IR syslogd (8).
|
.Xr syslogd 8 .
|
||||||
The string ?????? is
|
The string ?????? is
|
||||||
written to the log in its place.
|
written to the log in its place
|
||||||
.I (not valid in expect.)
|
.Pq Em not valid in expect .
|
||||||
.TP
|
.It \\\\r
|
||||||
.B \\\\r
|
|
||||||
Send or expect a carriage return.
|
Send or expect a carriage return.
|
||||||
.TP
|
.It \\\\s
|
||||||
.B \\\\s
|
|
||||||
Represents a space character in the string.
|
Represents a space character in the string.
|
||||||
This may be used when it
|
This may be used when it
|
||||||
is not desirable to quote the strings which contains spaces.
|
is not desirable to quote the strings which contains spaces.
|
||||||
The
|
The
|
||||||
sequence 'HI TIM' and HI\\sTIM are the same.
|
sequence 'HI TIM' and HI\\sTIM are the same.
|
||||||
.TP
|
.It \\\\t
|
||||||
.B \\\\t
|
|
||||||
Send or expect a tab character.
|
Send or expect a tab character.
|
||||||
.TP
|
.It \\\\\\\\
|
||||||
.B \\\\\\\\
|
|
||||||
Send or expect a backslash character.
|
Send or expect a backslash character.
|
||||||
.TP
|
.It \\\\ddd
|
||||||
.B \\\\ddd
|
|
||||||
Collapse the octal digits (ddd) into a single ASCII character and send that
|
Collapse the octal digits (ddd) into a single ASCII character and send that
|
||||||
character.
|
character
|
||||||
.I (some characters are not valid in expect.)
|
.Pq Em some characters are not valid in expect .
|
||||||
.TP
|
.It \^^C
|
||||||
.B \^^C
|
|
||||||
Substitute the sequence with the control character represented by C.
|
Substitute the sequence with the control character represented by C.
|
||||||
For example, the character DC1 (17) is shown as \^^Q.
|
For example, the character DC1 (17) is shown as \^^Q
|
||||||
.I (some characters are not valid in expect.)
|
.Pq Em some characters are not valid in expect .
|
||||||
.SH TERMINATION CODES
|
.El
|
||||||
The \fIchat\fR program will terminate with the following completion
|
.Sh TERMINATION CODES
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
program will terminate with the following completion
|
||||||
codes.
|
codes.
|
||||||
.TP
|
.Bl -tag -width indent
|
||||||
.B 0
|
.It 0
|
||||||
The normal termination of the program.
|
The normal termination of the program.
|
||||||
This indicates that the script
|
This indicates that the script
|
||||||
was executed without error to the normal conclusion.
|
was executed without error to the normal conclusion.
|
||||||
.TP
|
.It 1
|
||||||
.B 1
|
|
||||||
One or more of the parameters are invalid or an expect string was too
|
One or more of the parameters are invalid or an expect string was too
|
||||||
large for the internal buffers.
|
large for the internal buffers.
|
||||||
This indicates that the program as not
|
This indicates that the program as not
|
||||||
properly executed.
|
properly executed.
|
||||||
.TP
|
.It 2
|
||||||
.B 2
|
|
||||||
An error occurred during the execution of the program.
|
An error occurred during the execution of the program.
|
||||||
This may be due
|
This may be due
|
||||||
to a read or write operation failing for some reason or chat receiving
|
to a read or write operation failing for some reason or chat receiving
|
||||||
a signal such as SIGINT.
|
a signal such as
|
||||||
.TP
|
.Dv SIGINT .
|
||||||
.B 3
|
.It 3
|
||||||
A timeout event occurred when there was an \fIexpect\fR string without
|
A timeout event occurred when there was an
|
||||||
|
.Em expect
|
||||||
|
string without
|
||||||
having a "-subsend" string.
|
having a "-subsend" string.
|
||||||
This may mean that you did not program the
|
This may mean that you did not program the
|
||||||
script correctly for the condition or that some unexpected event has
|
script correctly for the condition or that some unexpected event has
|
||||||
occurred and the expected string could not be found.
|
occurred and the expected string could not be found.
|
||||||
.TP
|
.It 4
|
||||||
.B 4
|
The first string marked as an
|
||||||
The first string marked as an \fIABORT\fR condition occurred.
|
.Dv ABORT
|
||||||
.TP
|
condition occurred.
|
||||||
.B 5
|
.It 5
|
||||||
The second string marked as an \fIABORT\fR condition occurred.
|
The second string marked as an
|
||||||
.TP
|
.Dv ABORT
|
||||||
.B 6
|
condition occurred.
|
||||||
The third string marked as an \fIABORT\fR condition occurred.
|
.It 6
|
||||||
.TP
|
The third string marked as an
|
||||||
.B 7
|
.Dv ABORT
|
||||||
The fourth string marked as an \fIABORT\fR condition occurred.
|
condition occurred.
|
||||||
.TP
|
.It 7
|
||||||
.B ...
|
The fourth string marked as an
|
||||||
The other termination codes are also strings marked as an \fIABORT\fR
|
.Dv ABORT
|
||||||
|
condition occurred.
|
||||||
|
.It ...
|
||||||
|
The other termination codes are also strings marked as an
|
||||||
|
.Dv ABORT
|
||||||
condition.
|
condition.
|
||||||
.LP
|
.El
|
||||||
|
.Pp
|
||||||
Using the termination code, it is possible to determine which event
|
Using the termination code, it is possible to determine which event
|
||||||
terminated the script.
|
terminated the script.
|
||||||
It is possible to decide if the string "BUSY"
|
It is possible to decide if the string "BUSY"
|
||||||
was received from the modem as opposed to "NO DIAL TONE". While the
|
was received from the modem as opposed to "NO DIAL TONE".
|
||||||
|
While the
|
||||||
first event may be retried, the second will probably have little
|
first event may be retried, the second will probably have little
|
||||||
chance of succeeding during a retry.
|
chance of succeeding during a retry.
|
||||||
.SH SEE ALSO
|
.Sh SEE ALSO
|
||||||
Additional information about \fIchat\fR scripts may be found with UUCP
|
Additional information about
|
||||||
|
.Nm
|
||||||
|
scripts may be found with UUCP
|
||||||
documentation.
|
documentation.
|
||||||
The \fIchat\fR script was taken from the ideas proposed
|
The
|
||||||
by the scripts used by the \fIuucico\fR program.
|
.Nm
|
||||||
.LP
|
script was taken from the ideas proposed
|
||||||
uucico(1), uucp(1), syslog(3), syslogd(8).
|
by the scripts used by the uucico program.
|
||||||
.SH COPYRIGHT
|
.Pp
|
||||||
The \fIchat\fR program is in public domain.
|
.Xr syslog 3 ,
|
||||||
|
.Xr syslogd 8
|
||||||
|
.Sh COPYRIGHT
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
program is in public domain.
|
||||||
This is not the GNU public
|
This is not the GNU public
|
||||||
license.
|
license.
|
||||||
If it breaks then you get to keep both pieces.
|
If it breaks then you get to keep both pieces.
|
||||||
|
|
Loading…
Reference in a new issue