Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cu(C) — OpenDesktop 1.0.0y

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cat(C)

ct(C)

echo(S)

stty(C)

uucp(C)

uname(C)


     CU(C)                                      UNIX System V



     Name
          cu - call another UNIX/XENIX system


     Syntax
          cu [-sspeed] [-lline] [-h] [-t] [-xn] [-o|-e|-oe] [-n] telno

          cu [ -s speed ] [ -h ] [ -xn ] [ [-o|-e|-oe] -l line [ dir ]

          cu [-h] [-xn] [-o|-e|-oe] systemname


     Description
          cu calls up another UNIX system, a terminal, or  possibly  a
          non-UNIX  system.   It  manages  an interactive conversation
          with possible transfers of ASCII files.

          cu accepts the following options and arguments:

          -sspeed     Specifies the transmission speed (150, 300, 600,
                      1200,  2400,  4800,  9600,  19200,  38400).  The
                      default value is "Any" speed which  will  depend
                      on    the    order   of   the   lines   in   the
                      /usr/lib/uucp/Devices file.  A speed  range  can
                      also be specified (for example, -s1200-4800).

          -lline      Specifies  a  device  name   to   use   as   the
                      communication line. This can be used to override
                      the search that would otherwise take  place  for
                      the first available line having the right speed.
                      When the  -l  option  is  used  without  the  -s
                      option,  the  speed  of a line is taken from the
                      Devices file. When the -l  and  -s  options  are
                      both  used  together, cu will search the Devices
                      file to check if the  requested  speed  for  the
                      requested   line   is   available.  If  so,  the
                      connection will be made at the requested  speed;
                      otherwise  an  error message will be printed and
                      the call will not be 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  which  expect terminals to be
                      set to half-duplex mode.

          -t          Used to dial an ASCII terminal  which  has  been
                      set  to  auto  answer.   Appropriate  mapping of
                      carriage-return   to   carriage-return-line-feed
                      pairs is set.

          -xn         Causes  diagnostic  traces  to  be  printed;  it
                      produces   a  detailed  output  of  the  program
                      execution on stderr.  The debugging level, n, is
                      a single digit;  -x9 is the most useful value.

          -n          For added security,  will  prompt  the  user  to
                      provide the telephone number to be dialed rather
                      than taking it from the command line.

          telno       When using an automatic dialer, the argument  is
                      the   telephone  number  with  equal  signs  for
                      secondary  dial  tone  or  minus  signs   placed
                      appropriately for delays of 4 seconds.

          systemname  A UUCP system name may be  used  rather  than  a
                      telephone  number.  In this case, cu will obtain
                      an appropriate direct line or  telephone  number
                      from /usr/lib/uucp/Systems. 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.

          dir         The keyword dir can be used with cu  -lline,  in
                      order  to talk directly to a modem on that line,
                      instead of talking to another  system  via  that
                      modem.  This  can  be  useful  when debugging or
                      checking modem  operation.   Note:   only  users
                      with  write  access  to  the  Devices  file  are
                      permitted to use cu -lline dir.

          In addition, cu uses  the  following  options  to  determine
          communications settings:

          -o   If the remote system expects or sends  7-bit  with  odd
               parity.

          -e   If the remote system expects or sends 7-bit  with  even
               parity.

          -oe  If the remote system expects or sends  7-bit,  ignoring
               parity and sends 7-bit with either parity.

          By default, cu expects and sends  8-bit  characters  without
          parity.   If  the  login  prompt received appears to contain
          incorrect 8-bit characters, or a correct login is  rejected,
          use the 7-bit options described above.

          After making the connection, cu runs as two  processes:  the
          transmit  process  reads  data  from the standard input and,
          except for lines beginning with ~, passes it to  the  remote
          system;  the  receive  process  accepts data from the remote
          system and, except for lines beginning with ~, 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 ~ have special
          meanings.

          The transmit process interprets the following user initiated
          commands:

          ~.                  terminate the conversation.

          ~!                  escape to an interactive  shell  on  the
                              local system.

          ~!cmd...            run cmd on the local system (via sh -c).

          ~$cmd...            run cmd locally and send its  output  to
                              the remote system.

          ~%cd                change  the  directory  on   the   local
                              system.    Note:  ~!cd  will  cause  the
                              command  to  be  run  by  a   sub-shell,
                              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 local system) to file
                              to  on 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
                              (which can also be specified as ~%b).

          ~%debug             toggles the -x debugging level between 0
                              and  9  (which  can also be specified as
                              ~%d).

          ~t                  prints  the   values   of   the   termio
                              structure   variables   for  the  user's
                              terminal (useful for debugging).

          ~l                  prints  the   values   of   the   termio
                              structure   variables   for  the  remote
                              communication    line    (useful     for
                              debugging).

          ~%nostop            toggles between  DC3/DC1  input  control
                              protocol  and no input control.  This is
                              useful in case the remote system is  one
                              which  does  not respond properly to the
                              DC3 and DC1 characters.

          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.

          The use of ~%put requires stty(C) and cat(C) on  the  remote
          side.   It  also  requires  that  the current erase and kill
          characters on  the  remote  system  be  identical  to  these
          current control characters on the local system.  Backslashes
          are inserted at appropriate places.

          The use of ~%take requires  the  existence  of  echo(S)  and
          cat(C)  on the remote system.  Also, tabs mode (See stty(C))
          should be set on the remote system if tabs are to be  copied
          without expansion to spaces.

          When cu is  used  on  system1  to  connect  to  system2  and
          subsequently used on system2 to connect to system3, commands
          on system2 can be executed by using ~~.  Executing  a  tilde
          command  reminds  the  user  of the local system uname.  For
          example, uname can be executed on systems 1,  2,  and  3  as
          follows:

               uname
               system3
               ~system1!uname
               system1
               ~~system2!uname
               system2

          In general, ~ causes the  command  to  be  executed  on  the
          original  machine,  ~~  causes the command to be executed on
          the next machine in the chain.


     Examples
          To dial a system whose telephone number is 9  201  555  1212
          using 1200 baud (where dialtone is expected after the 9):

               cu  -s1200   9=12015551212

          If the speed is not specified, ``Any'' is the default value.

          To login to a system connected by a direct line:

               cu  -l  /dev/ttyXX

          or

               cu -l ttyXX

          To dial a system with  the  specific  line  and  a  specific
          speed:

               cu  -s1200  -l  ttyXX

          To dial a system using a specific line  associated  with  an
          auto dialer:

               cu  -l  ttyXX  9=12015551212

          To use a system name:

               cu  systemname

          To talk directly to an ACU (connect directly with the  modem
          and enter modem commands manually):

               cu  -lttyXX dir


     Files
          /usr/lib/uucp/Systems
          /usr/lib/uucp/Devices
          /usr/lib/uucp/LCK..(tty-device)


     See Also
          cat(C), ct(C), echo(S), stty(C), uucp(C), uname(C)


     Diagnostics
          Exit code is zero for normal exit, otherwise, one.


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


     Notes
          There is an artificial slowing of transmission by cu  during
          the ~%put operation so that loss of data is unlikely.


     Standards Conformance
          cu is conformant with:

          AT&T SVID Issue 2, Select Code 307-127;
          and The X/Open Portability Guide II of January 1987.


     (printed 8/28/89)                                  CU(C)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026