Table Of Contents
Creating and Using Modem Chat Scripts
Chat Script Overview
How To Configure Chat Scripts
Understanding Chat Script Naming Conventions
Creating a Chat Script
Chat String Escape Key Sequences
Adding a Return Key Sequence
Chat String Special-Case Script Modifiers
Configuring the Line to Activate Chat Scripts
Manually Testing a Chat Script on an Asynchronous Line
Using Chat Scripts
Generic Chat Script Example
Traffic-Handling Chat Script Example
Modem-Specific Chat Script Examples
Dialer Mapping Example
System Login Scripts and Modem Script Examples
Creating and Using Modem Chat Scripts
This chapter describes how to create and use modem chat scripts. These tasks are presented in the following main sections:
•Chat Script Overview
•How To Configure Chat Scripts
•Using Chat Scripts
To identify the hardware platform or software image information associated with a feature, use the Feature Navigator on Cisco.com to search for information about the feature or refer to the software release notes for a specific release. For more information, see the "Identifying Supported Platforms" section in the "Using Cisco IOS Software" chapter.
For a complete description of the modem support commands in this chapter, refer to the Cisco IOS Dial Technologies Command Reference publication. To locate documentation of other commands that appear in this chapter, use the command reference master index or search online.
Chat Script Overview
Chat scripts are strings of text used to send commands for modem dialing, logging in to remote systems, and initializing asynchronous devices connected to an asynchronous line.
Note On a router, chat scripts can be configured only on the auxiliary port.
A chat script must be configured to dial out on asynchronous lines. You also can configure chat scripts so that they can be executed automatically for other specific events on a line, or so that they are executed manually.
Each chat script is defined for a different event. These events can include the following:
•Line activation
•Incoming connection initiation
•Asynchronous dial-on-demand routing (DDR)
•Line resets
•Startup
Note Outbound chat scripts are not supported on lines where modem control is set for inbound activity only using the modem dialin command.
How To Configure Chat Scripts
The following tasks must be performed before a chat script can be used:
•Define the chat script in global configuration mode using the chat-script command.
•Configure the line so that a chat script is activated when a specific event occurs (using the script line configuration command), or start a chat script manually (using the start-chat privileged EXEC command).
To configure a chat script, perform the tasks in the following sections:
•Understanding Chat Script Naming Conventions (Required)
•Creating a Chat Script (Required)
•Configuring the Line to Activate Chat Scripts (Required)
•Manually Testing a Chat Script on an Asynchronous Line (Optional)
See the section "Using Chat Scripts" later in this chapter for examples of how to use chat scripts.
Understanding Chat Script Naming Conventions
When you create a script name, include the modem vendor, type, and modulation, separated by hyphens, as follows:
vendor-type-modulation
For example, if you have a Telebit t3000 modem that uses V.32bis modulation, your script name would be:
Note Adhering to the recommended naming convention allows you to specify a range of chat scripts by using partial names in UNIX-style regular expressions. The regular expressions are used to match patterns and select chat scripts to use. This method is particularly useful for dialer rotary groups on an interface that dials multiple destinations. Regular expressions are described in the "Regular Expressions" appendix in the Cisco IOS Terminal Services Configuration Guide.
Creating a Chat Script
We recommend that one chat script (a "modem" chat script) be written for placing a call and that another chat script (a "system" or "login" chat script) be written to log in to remote systems, where required.
To define a chat script, use the following command in global configuration mode:
Command
|
Purpose
|
Router(config)# chat-script script-name expect
send...
|
Creates a script that will place a call on a modem, log in to a remote system, or initialize an asynchronous device on a line.
|
The Cisco IOS software waits for the string from the modem (defined by the expect portion of the script) and uses it to determine what to send back to the modem (defined by the send portion of the script).
Chat String Escape Key Sequences
Chat script send strings can include the special escape sequences listed in Table 1.
Table 1 Chat Script Send String Escape Sequences
Escape Sequence
|
Description
|
\
|
Sends the ASCII character with its octal value.
|
\\
|
Sends a backslash (\) character.
|
\"
|
Sends a double-quote (") character (does not work within double quotes).
|
\c
|
Suppresses a new line at the end of the send string.
|
\d
|
Delays for 2 seconds.
|
\K
|
Inserts a BREAK.
|
\n
|
Sends a newline or linefeed character.
|
\N
|
Sends a null character.
|
\p
|
Pauses for 0.25 second.
|
\q
|
Reserved, not yet used.
|
\r
|
Sends a return.
|
\s
|
Sends a space character.
|
\t
|
Sends a tab character.
|
\T
|
Replaced by phone number.
|
" "
|
Expects a null string.
|
BREAK
|
Causes a BREAK. This sequence is sometimes simulated with line speed changes and null characters. May not work on all systems.
|
EOT
|
Sends an end-of-transmission character.
|
Adding a Return Key Sequence
After the connection is established and you press the Return key, you must often press Return a second time before the prompt appears. To create a chat script that enters this additional Return key for you, include the following string with the Return key escape sequence (see Table 1) as part of your chat script:
This part of the script specifies that, after the connection is established, you want ssword to be displayed. If it is not displayed, you must press Return again after the timeout passes. (For more information about expressing characters in chat scripts, see the "Regular Expressions" appendix in the Cisco IOS Terminal Services Configuration Guide.)
Chat String Special-Case Script Modifiers
Special-case script modifiers are also supported; refer to Table 2 for examples.
Table 2 Special-Case Script Modifiers
Special Case
|
Function
|
ABORT string
|
Designates a string whose presence in the input indicates that the chat script has failed. (You can have as many active abort entries as you like.)
|
TIMEOUT time
|
Sets the time to wait for input, in seconds. The default is 5 seconds, and a timeout of 60 seconds is recommended for V.90 modems.
|
For example, if a modem reports BUSY when the number dialed is busy, you can indicate that you want the attempt stopped at this point by including ABORT BUSY in your chat script.
Note If you use the expect-send pair ABORT SINK instead of ABORT ERROR, the system terminates abnormally when it encounters SINK instead of ERROR.
Configuring the Line to Activate Chat Scripts
Chat scripts can be activated by any of five events, each corresponding to a different version of the script line configuration command. To start a chat script manually at any point, see the following section, "Manually Testing a Chat Script on an Asynchronous Line."
To define a chat script to start automatically when a specific event occurs, use one of the following commands in line configuration mode:
Command
|
Purpose
|
Router(config-line)# script activation regexp1
|
Starts a chat script on a line when the line is activated (every time a command EXEC is started on the line).
|
Router(config-line)# script connection regexp
|
Starts a chat script on a line when a network connection is made to the line.
|
Router(config-line)# script dialer regexp
|
Specifies a modem script for DDR on a line.
|
Router(config-line)# script reset regexp2
|
Starts a chat script on a line whenever the line is reset.
|
Router(config-line)# script startup regexp2
|
Starts a chat script on a line whenever the system is started up.
|
Note Outbound chat scripts are not supported on lines where modem control is set for inbound activity only (using the modem dialin command).
Manually Testing a Chat Script on an Asynchronous Line
To test a chat script on any line that is currently not active, use the following commands in privileged EXEC mode:
|
Command
|
Purpose
|
Step 1
|
Router# debug chat line number
|
Starts detailed debugging on the specified line.
|
Step 2
|
Router# start-chat regexp [line-number [dialer-string]]
|
Starts a chat script on any asynchronous line.
|
If you do not specify the line number, the script runs on the current line. If the line specified is already in use, you cannot start the chat script. A message appears indicating that the line is already in use.
Using Chat Scripts
The following sections provide examples of how to use chat scripts:
•Generic Chat Script Example
•Traffic-Handling Chat Script Example
•Modem-Specific Chat Script Examples
•Dialer Mapping Example
•System Login Scripts and Modem Script Examples
Generic Chat Script Example
The following example chat script includes a pair of empty quotation marks (" "), which means "expect anything," and \r, which means "send a return":
" " \r "name:" "myname" "ord":" "mypassword" ">" "slip default"
Traffic-Handling Chat Script Example
The following example shows a configuration in which, when there is traffic, a random line will be used. The dialer code will try to find a script that matches either the modem script .*-v32 or the system script cisco. If there is no match for either the modem script or the system script, you will see a "no matching chat script found" message.
! v.32 rotaries are in rotary 1.
! Use v.32 generic script.
dialer map ip 10.0.0.1 modem-script .*-v32 system-script cisco 1234
Modem-Specific Chat Script Examples
The following example shows line chat scripts being specified for lines connected to Telebit and US Robotics modems:
! Some lines have Telebit modems.
! Some lines have US Robotics modems.
Dialer Mapping Example
The following example shows a modem chat script called dial and a system login chat script called login:
chat-script dial ABORT ERROR "" "AT Z" OK "ATDT \T" TIMEOUT 60 CONNECT \c
chat-script login ABORT invalid TIMEOUT 60 name: myname word: mypassword ">" "slip
default"
dialer map ip 10.55.0.1 modem-script dial system-script login 96837890
Figure 1 illustrates the configuration.
Figure 1 Chat Script Configuration and Function
•The configuration is on Router A.
•The modem chat script dial is used to dial out to the modem at Router B.
•The system login chat script login is used to log in to Router B.
•The phone number is the number of the modem attached to Router B.
•The IP address in the dialer map command is the address of Router B.
In the sample script shown, the dialer in-band command enables DDR on asynchronous interface 10, and the dialer map command dials 96837890 after finding the specified dialing and the system login scripts. When a packet is received for 10.55.0.1, the first thing to happen is that the modem script is implemented. Table 3 lists the functions that are implemented with each expect-send pair in the modem script called dial.
Table 3 Example Modem Script Execution
Expect and Send Pair
|
Implementation
|
ABORT ERROR
|
Ends the script execution if the text "ERROR" is found. (You can have as many active abort entries as you like.)
|
" " "AT Z"
|
Without expecting anything, sends an "AT Z" command to the modem. (Note the use of quotation marks to allow a space in the send string.)
|
OK "ATDT \T
|
Waits to see "OK." Sends "ATDT 96837890."
|
TIMEOUT 60
|
Waits up to 60 seconds for next expect string.
|
CONNECT \c
|
Expects "connect," but does not send anything. (Note that \c is effectively nothing; " " would have indicated nothing followed by a carriage return.)
|
After the modem script is successfully executed, the system login script is executed. Table 4 lists the functions that are executed with each expect-send pair in the system script called login.
Table 4 Example System Script Execution
Expect and Send Pair
|
Implementation
|
ABORT invalid
|
Ends the script execution if the message "invalid username or password" is displayed.
|
TIMEOUT 60
|
Waits up to 60 seconds.
|
name: username
|
Waits for "name:" and sends username. (Using just "name:" will help avoid any capitalization issues.)
|
word: password
|
Waits for "word:" and sends the password.
|
">" "slip default"
|
Waits for the > prompt and places the line into Serial Line Internet Protocol (SLIP) mode with its default address.
|
System Login Scripts and Modem Script Examples
The following example shows the use of chat scripts implemented with the system-script and modem-script options of the dialer map command.
If there is traffic for IP address 10.2.3.4, the router will dial the 91800 number using the usrobotics-v32 script, matching the regular expression in the modem chat script. Then the router will run the unix-slip chat script as the system script to log in.
If there is traffic for 10.3.2.1, the router will dial 8899 using usrobotics-v32, matching both the modem script and modem chat script regular expressions. The router will then log in using the cisco-compressed script.
! Script for dialing a usr v.32 modem:
chat-script usrobotics-v32 ABORT ERROR "" "AT Z" OK "ATDT \T" TIMEOUT 60 CONNECT \c
! Script for logging into a UNIX system and starting up SLIP:
chat-script unix-slip ABORT invalid TIMEOUT 60 name: billw word: wewpass ">" "slip
default"
! Script for logging into a Cisco access server and starting up TCP header compression:
chat-script cisco-compressed...
script dialer usrobotics-*
dialer map ip 10.2.3.4 system-script *-v32 system-script cisco-compressed 91800
Cisco and the Cisco Logo are trademarks of Cisco Systems, Inc. and/or its affiliates in the U.S. and other countries. A listing of Cisco's trademarks can be found at www.cisco.com/go/trademarks. Third party trademarks mentioned are the property of their respective owners. The use of the word partner does not imply a partnership relationship between Cisco and any other company. (1005R)
Any Internet Protocol (IP) addresses used in this document are not intended to be actual addresses. Any examples, command display output, and
figures included in the document are shown for illustrative purposes only. Any use of actual IP addresses in illustrative content is unintentional
and coincidental.
© 2001-2008 Cisco Systems, Inc. All rights reserved.