CU(1C) SysV CU(1C)
NAME
cu - call another UNIX system
SYNOPSIS
cu [-sspeed] [-lline] [-h] [-t] [-d] [-o | -e] [-n] telno
cu [ -s speed ] [ -h ] [ -d ] [ -o | -e ] -l line
cu [-h] [-d] [-o | -e] systemname
DESCRIPTION
cu calls up another UNIX system, a terminal, or possibly a non-UNIX
system. It manages an interactive conversation with possible ASCII file
transfers.
After making the connection, cu runs as two processes: the transmit
process reads data from the standard input and, except for lines
beginning with a tilde (~), passes it to the remote system; the receive
process accepts data from the remote system and, except for lines
beginning with a tilde (~), passes it to the standard output. Normally,
an automatic DC3/DC1 protocol is used to control input from the remote so
the buffer is not overrun. Lines beginning with a tilde (~) have special
meanings. Both the transmit and the receive processes are described in
the sections below.
When cu is used on system X to connect to system Y and subsequently used
on system Y to connect to system Z, commands on system Y can be executed
by using a double tilde (~~). Executing a tilde command reminds the user
of the local system uname. For example, uname(1) can be executed on Z,
X, and Y as follows:
uname
Z
~[X]!uname
X
~~[Y]!uname
Y
In general, a tilde (~) causes the command to be executed on the original
machine; a double tilde (~~) causes the command to be executed on the
next machine in the chain.
The SysV version of cu supports the Vadic 212 Autodialer.
OPTIONS
-sspeed Specifies the transmission speed (300, 1200, 2400, 4800, 9600);
The default value is "Any" speed which will depend on the order
of the lines in the /usr/lib/uucp/Devices file. Most modems
are either 300 or 1200 baud. Directly connected lines may be
set to a speed higher than 1200 baud.
-lline Specifies a device name to use as the communication line. Can
be used to override searching for the first available line
having the right speed. When this option is used without the -s
option, the speed of a line is taken from the
/usr/lib/uucp/Devices file. With the -s option, the Devices
file is searched for the requested speed for the requested
line. If possible, the connection is made at the requested
speed; otherwise, an error message is printed and the call is
not made. The specified device is generally a directly
connected asynchronous line (e.g., /dev/ttyab) in which case a
telephone number (telno) is not required. The specified device
need not be in the /dev directory. If the specified device is
associated with an auto dialer, a telephone number must be
provided. Use of this option with systemname rather than telno
will not give the desired result (see systemname below).
-h Emulates local echo, supporting calls to other computer systems
that expect terminals to be set to half-duplex mode.
-t Sets appropriate mapping of carriage-return to carriage-
return-line-feed pairs. Used when dialing an ASCII terminal
set to auto answer.
-d Prints diagnostic traces.
-e Generates even parity for data sent to the remote system.
-o Generates odd parity for data sent to the remote system.
-n Prompts you to provide the telephone number to be dialed rather
than taking it from the command line (for added security).
SPECIAL ARGUMENTS
telno When using an automatic dialer, telno is the telephone
number with equal signs for secondary dial tone or minus
signs placed appropriately, for delays of 4 seconds.
systemname Systemname is a uucp system name that may be used rather
than a phone number. Cu obtains an appropriate direct line
or phone number from /usr/lib/uucp/Systems. Cu tries each
phone number or direct line for systemname in the Systems
file until a connection is made or all the entries are
tried. Note: the systemname option should not be used in
conjunction with the -l and -s options, as cu will connect
to the first available line for the system name specified,
ignoring the requested line and speed.
TRANSMIT PROCESS
The transmit process interprets the following:
~. Terminate the conversation.
~! Escape to an interactive shell on the local system.
~!cmd... Run cmd on the local system, via the -c option to the
sh(1) command.
~$cmd... Run cmd locally and send its output to the remote
system.
~%cd Change the directory on the local system. NOTE: A
~!cd causes the command to be run by a sub-Shell,
which was probably not what was intended.
~%take from [ to ] Copy file from (on the remote system) to file to on
the local system. If to is omitted, the from
argument is used in both places.
~%put from [ to ] Copy file from (on the local system) to file to on
the remote system. If to is omitted, the from
argument is used in both places.
For both ~%take and put commands, as each block of
the file is transferred, consecutive single digits
are printed to the terminal.
~~ line Send the line ~ line to the remote system.
~%break Transmit a BREAK to the remote system (this option
can also be specified as ~%b).
~%debug Toggle the -d debugging option on or off (this option
can also be specified as ~%d).
~t Print the values of the termio structure variables
for the user's terminal (useful for debugging).
~l Print the values of the termio structure variables
for the remote communication line (useful for
debugging).
~%nostop Toggle between DC3/DC1 input control protocol and no
input control. This is useful when the remote system
is one which does not respond properly to the DC3 and
DC1 characters.
RECEIVE PROCESS
The receive process normally copies data from the remote system to its
standard output. Internally the program accomplishes this by initiating
an output diversion to a file when a line from the remote begins with ~.
Data from the remote is diverted (or appended, if >> is used) to file on
the local system. The trailing ~> marks the end of the diversion.
Using ~%put requires stty(1) and cat(1) on the remote side. It also
requires that the current erase and kill characters on the remote system
be identical to the current ones on the local system. Backslashes are
inserted at appropriate places. There is an artificial slowing of
transmission during the ~%put operation, so that loss of data is
unlikely.
Using ~%take requires echo(1) and cat(1) on the remote system. The stty
tabs mode should also be set on the remote system, if tabs are to be
copied without expansion.
EXAMPLES
To dial a system whose number is 9 201 555 1212 using 1200 baud (where
you expect a dialtone after the 9), use the following command:
# cu -s1200 9=12015551212
If the speed is not specified, "Any" is the default value.
To log in to a system connected by a direct line, type this (where XX is
a valid TTY number):
# cu -l /dev/ttyXX
or
# cu -l ttyXX
To dial a system with the specific line and a specific speed, type this
(where XX is a valid TTY number):
# cu -s1200 -l /dev/ttyXX
To dial a system using a specific line associated with an auto dialer,
execute the following command (where XX is a line number):
# cu -l culXX 9=12015551212
To use a system name, use this command (where YYYZZZ is the name of the
system):
# cu YYYZZZ
BUGS
If you cu to a DOMAIN node whose default start-up shell is /com/sh (as
opposed to /bin/sh or /bin/csh), you should either: 1) change your
command search rules (i.e., do a
csr -a /bin /usr/bin ...
inside the AEGIS Shell) so that the cu transmit process can properly
locate SysV commands, or 2) have the remote start-up AEGIS Shell invoke a
SysV Shell (i.e., /bin/sh) so that the cu receive process can properly
parse the request (since the tilde character has a special meaning in the
AEGIS Shell).
Cu buffers input internally.
The cu command does not do any integrity checking on data it transfers.
Data fields with special cu characters may not be transmitted properly.
Depending on the interconnection hardware, it may be necessary to use a
~. to terminate the conversion even if stty 0 has been used. Non-
printing characters are not dependably transmitted using either the ~%put
or ~%take commands. cu between an IMBR1 and a penril modem will not
return a login prompt immediately upon connection. A carriage return
will return the prompt.
FILES
/usr/lib/uucp/Systems
/usr/lib/uucp/Devices
/usr/spool/locks/LCK.. (tty-device)
DIAGNOSTICS
Exit code is zero for normal exit, one otherwise.
SEE ALSO
cat (1), echo (1), stty (1), uname (1), uucp (1C).