COHERENT manpages

This page displays the COHERENT manpage for sys [Data base for UUCP connections].

List of available manpages
Index


sys -- System Administration

Data base for UUCP connections
/usr/lib/uucp/sys

The  file /usr/lib/uucp/sys  describes  how to  communicate  with a  remote
system.   The UUCP  daemon  uucico uses  the  information in  this file  to
telephone a  remote system, log into  a remote system, and  control what it
allows a remote system to do on your system.

Command cu also reads file sys  for information on how it can call a remote
system.  However, the following descriptions concentrate on how sys is used
by uucico.

Structure of the sys File

sys has the following structure:

    command argument
        ...
    alternate
    command argument
        ...
    alternate
    command argument
        ...
    system remotesystem
    command argument
        ...
    alternate
    command argument
        ...
    system remotesystem
    command argument
        ...
    alternate
    command argument
        ...

Blank lines  in the file are  ignored.  The body of the  file consists of a
series of  commands.  Each command defines one or  more values; each value,
in turn, determines  one aspect of how your system  interacts with a remote
system.  A  backslash at the end  of a line lets an  entry extend over more
than one one line.

The commands  from the top  of sys to  the first system  command set global
values  -- that  is, the  values used  by default  when dealing  with every
remote system.  Note that uucico  recognizes a number of global values that
are not explicitly written in sys.

The command  system names  a remote system.   The commands from  one system
command to the next (or the  end of the file, whichever comes first) define
the values  that uucico uses when it communicates  with that system.  These
system-specific values can override any of the global values.

The command alternate introduces a block of alternate values.  The commands
from one  alternate command to the  next alternate command (or  to the next
system command  or to  the end  of the file,  whichever comes first)  set a
block of  alternate values.  uucico  uses a block of  alternate values when
the default values (and all  preceding blocks of alternate values) fail for
any  reason.   By  defining blocks  of  alternate  values,  you can  define
multiple ways to interact with a remote system.

Order of Command Execution

As you can see the above  display, both the global section and each system-
specific section  can contain blocks  of alternate commands.   The order in
which uucico reads blocks of  commands is important: each block can contain
its own  version of a given  command, and uucico uses the  value set by the
command that it has read last.

The following  describes the order  in which uucico reads  commands when it
attempts to call site remotesite:

1. uucico reads its default  global values (which are described below).  It
   then reads  the global-values section of sys, up  to the first alternate
   command.

2. uucico  reads the  section remotesite,  from its  system command  to the
   first alternate command.

3. uucico calls remotesite.

4. If the  call to  remotesite succeeds,  then all is  well.  If  it fails,
   however, then uucico reads the  first block of alternate commands in the
   global  section,  then the  first  block of  alternate  commands in  the
   section for remotesite.

   Note that  a block of  alternate values can simply  reproduce values set
   previously.  This  in effect forces  uucico to try the  same values once
   again.

5. uucico again calls remotesite.

6. If the call  succeeds, then all is well.  If  it fails, uucico reads the
   second block  of alternate values  (should there be one)  in the global-
   defaults  section, then  the second  block  of alternate  values (again,
   should there  be one) in the section for  remotesystem. uucico makes its
   third attempt to call remotesite.

This process  continues either until uucico succeeds  in getting through to
remotesite, or until it runs out  of blocks of alternate values in both the
global section and in the site-specific section.

As  you can see,  it can  be difficult  at times to  tell just  what values
uucico is using at any given time.  The command uuchk can help you untangle
this skein of values.  See its Lexicon entry for details.

Structural Commands

The  following  commands help  control  the manner  in  which uucico  reads
commands from sys:

system remotesystem
     Name the  remote system.  All  commands up to the  next system command
     refer to the system remotesystem.

alternate [name]
     Introduce an  alternate set of  commands.  The optional  name lets you
     name this  block of alternate  commands; if uucico uses  this block of
     alternate commands, it records name in the log file for remotesystem.

default-alternates true|false
     If its  argument is false, do  not use any blocks  of alternate values
     from the global section.  The default is true.

Chat Commands

The  command chat  defines a  chat  script.  A  chat script  summarizes the
conversation that your system has with  the remote system as it attempts to
log into that system.

chat has the following structure:

    chat expect respond expect respond ... expect respond

As you  can see,  a chat  script consists of  pairs of strings.   Each pair
contains an expect string, which gives what you expect the remote system to
say to  your system;  and a  respond string, which  gives what  your system
sends in  reply.  When uucico runs out of  expect/respond pairs, it assumes
that it  has succeeded in  logging into remotesystem.  If you want  to send
something to  the remote system without waiting an  expect string, then the
expect string in a expect/respond pair should be simply a pair of quotation
marks with nothing between.

Each string  in the chat  script is demarcated by  white space.  Therefore,
you must  use the  escape sequence  `\s' to indicate  white space  within a
string.  You  can embed other  escape sequences within  the respond string;
these are given below.

An expect string can contain several sub-strings separated by hyphens.  The
sub-strings themselves  comprise pairs of expect/respond  strings.  If your
system does not receive the first  expect sub-string, it can send the first
respond string  (to prod the  remote system), then await  the second expect
string; and so  on, until your system either runs  out of sub-strings or it
receives  an expect  sub-string that  it recognizes.   You can,  of course,
repeat the  same expect/respond pair  more than once.   Because sub-strings
are separated by hyphens, you cannot  use a literal hyphen in a string; you
should indicate  a literal hyphen by the escape  sequence `\055' (ASCII for
the hyphen character).

You can embed the following escape sequences in a respond string:

     \\        Literal backslash character
     \DDD      Character with octal value DDD
     \b        Backspace
     \c        Suppress carriage return at end of send string
     \d        Delay sending for one or two seconds
     \E        Enable echo checking
     \e        Disable echo checking
     \K        Same as BREAK
     \L        Your system's login name
     \N        NUL
     \n        Newline or line feed
     \P        The password on the system being contacted
     \p        Pause sending for a fraction of a second
     \r        Carriage return
     \s        Space
     \t        Tab
     \xDDD     Character with hexadecimal value DDD
     \Z        Send name of the system being called
     EOT       End-of-transmission character (<ctrl-D>)
     BREAK     Break character

As  in C,  up  to three  octal  digits may  follow a  backslash The  escape
sequence \x can be followed  by an indefinite number of hexadecimal digits.
To follow a hexadecimal escape sequence with a hexadecimal digit, interpose
a send string of `""'.

uucico sends a  carriage return at the end of  each send string, unless the
escape sequence \c appears in the string.

``Echo checking''  means that after uucico writes  each character, it waits
for  the  remote  system to  echo  it.   You  must  turn on  echo  checking
separately for each send string for which you want it.

The following  gives an  example chat script;  the numbers simply  mark the
elements of  the chat script for  the discussion that follows,  and are not
part of the chat script:

             1    2      3                            4     5     6
    chat "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: nuucp word: public

This script does the following:

1. Expect nothing from the modem (as indicated by the empty string "").

2. Send newline and  carriage-return characters, as indicated by the escape
   sequence \r\c.

3. Expect the string ogin: (or a  string that ends with ogin:).  If this is
   not received within the defined pause period, send a break character (as
   indicated by  the escape sequence BREAK), and wait  again for ogin:.  If
   the procedure  times out  again, send  another break character  and wait
   again.  If the third attempt times out, quit.

4. Having received ogin: from remotesystem, send the string nuucp.

5. Wait for the string word:, that is, the tail of the prompt Password:.

6. When the password prompt is received, reply with the password public.

Some  users may  experience trouble  when  logging into  a machine  that is
running  SCO  UNIX: it  appears  not to  recognize  carriage returns.   The
simplest work  around is to embed  the ``delay'' escape sequence  \d in the
send strings.   For example,  if you  were using the  above chat  script to
communicate with  a SCO UNIX system,  and the system was  not responding to
your transmission, you could modify it as follows:

    chat "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: \d\dnuucp\d\d\d\d word: \d\dpublic\d\d\d

This slows  how your system  responds to the  SCO system; giving  it enough
time to  ``digest'' your transmission  appears to work  around the problem.
You can try adjusting the number of \d characters to get best performance.

The  following  commands help  control  the  chat your  system  has with  a
remotesystem:

chat-fail string
     Abort the  chat if string  is received.  string  cannot contain white-
     space characters; use escape sequences instead.

     The  description  for  remotesystem  can  contain  multiple  chat-fail
     commands.  The default is to have none.

chat-program program arguments
     Pass  arguments (if  any) to  program,  which is  the path  name of  a
     program that  you want uucico to execute before  it executes your chat
     command.  program  can contain its  own version of a  chat script, but
     this is  not required.  If  both a system's  description contains both
     the commands chat-program  and chat, uucico always executes the former
     first.

     arguments can contain any of the following escape sequences:

         \Y  Port device name
         \S  Port speed
         \\  Literal backslash

     uucico connects  the standard input and standard  output of program to
     the port  in use, and  connects the standard  error of program  to the
     UUCP log file.  If program does not exit with a status of zero, uucico
     assumes that it has failed.

     uucico runs program  as user uucp, and the environment  is that of the
     process that  invoked uucico. Take care that by  using program, you do
     not compromise your system's security.

chat-seven-bit true|false
     If  the argument  is true,  uucico strips  all incoming  characters to
     seven bits before it  compares them with the expect string; otherwise,
     it uses all eight bits.  The default is true because some UNIX systems
     generate  parity bits  during the  login prompt  that must  be ignored
     while running a chat script.

chat-timeout seconds
     Wait seconds  for the remote system  to respond to a  send string.  If
     send string times out, uucico sends the next send sub-string (if there
     is one), or fails.  The default is timeout time is 60 seconds.

Aliases and Identifiers

The following commands let you manipulate how your system identifies itself
to a remotesystem:

alias systemalias
     Define systemalias to be  an alias for remotesystem. The commands uucp
     and uux can use systemalias, as can remotesystem itself.  This command
     is  helpful should  remotesystem change  its name:  it spares  you the
     trouble  of  having  to comb  through  your  system  to replace  every
     occurrence of the old name.  The default is to have no aliases.

myname mysysname
     Tell your  system to identify itself as mysysname  instead of its true
     name (as kept in file /etc/uucpname) when it calls remotesystem.

     If the  description of remotesystem includes  the command called-login
     without  the  argument  ANY,  your  system  will  identify  itself  as
     mysysname when it is called by remotesystem.

call-login loginname
     Tell uucico how to expand the escape sequence \L, which stands for the
     login name.  With this command, you can use a default chat script with
     several different  systems, expanding  the login escape  sequence (and
     password, as will be shown next) with the appropriate strings.

call-password password
     Tell uucico how  to expand the escape sequence \P,  which stands for a
     password.   As  with the  command  call-login,  described above,  this
     command lets you  use the same chat script with  a number of different
     systems,  by expanding  the  login and  password  escape sequences  as
     needed.

Accepting a Call

The following  commands affect how your system handles  a call from another
system:

called-login login_identifer [remotesystem ... ]
     Recognize  the remote  system with the  name login_identifier  when it
     attempts to log into your system.  If you set login_identifier to ANY,
     uucico will  accept any  login identifier.  The  optional remotesystem
     arguments name each remote system that is allowed to log in under that
     login identifier.

     Some  systems  use  this  command  to  select a  number  of  different
     alternate sections  within sys; in effect, this  allows uucico to jump
     to a given  portion of sys based upon the  identity of the system that
     is attempting  to log  in.  In  this case, the  remotesystem arguments
     will not be used.

callback true|false
     If true,  this command tells uucico  to hang up when  the given remote
     system  calls, and  call  it back.   This  is a  security measure,  to
     protect  your system  from being  penetrated  by remote  systems.  The
     default is false.

called-chat  '' '' \r\d\r in:--in: nuucp word: public word: serialnumber
called-chat-fail string
called-chat-program program arguments
called-chat-seven-bit true|false
called-chat-timeout seconds
     These  commands control  how a  remote system  logs into  your system.
     They  are analogous  to  the commands  chat, chat-fail,  chat-program,
     chat-seven-bit, and chat-timeout, and are structured just like them.

     Note that  called-chat the  rest of  these commands are  invoked after
     protocol negotiation has  been completed between uucico on your system
     and its counterpart on the remote system, but before data exchange has
     begun.  How  this chat sequence  dovetails with the  conversation that
     COHERENT  has with  the remote  system when it  logs into  your system
     depends upon  a number of  factors, in particular  whether COHERENT or
     uucico controls the port in question.  It is customary to let COHERENT
     control logging in through serial ports, as these ports can be used by
     interactive users as well as by UUCP sessions, while uucico usually is
     allowed to  control its well-known  TCP port (540).   However, called-
     chat can be used to perform special tasks on normal serial lines, such
     as put  the modem  into a  special state that  is required by  a given
     remote site's hardware.

Time Strings and Time Commands

Many of the commands that you can use in sys commands use a special kind of
string,  the  time string,  to  specify  a range  of  time.  The  following
describes the structure of a time string.

Each simple time string begins with  a token that sets the day of the week.
You can use any one of the following values:

     Su        Sunday only
     Mo        Monday only
     Tu        Tuesday only
     We        Wednesday only
     Th        Thursday only
     Fr        Friday only
     Sa        Saturday only
     Wk        Every week (Monday through Friday)
     Any       Every day of the week

You can  name more  than one  day of the  week in  a time string:  just use
commas to separate entries.

After the day of the week  comes a range of hours and minutes The beginning
and ending times  are separated by a hyphen.  Military  time is used, i.e.,
hour 0 (midnight)  through hour 23 (11 PM).  uucico  uses the local time on
your system.  The  range of time can may cross  midnight; for example 2300-
0700 indicates 11 PM to 7 AM the following day.

If no time is given, any time applies.  The word Never in place of the time
string indicates  that this  remote system is  never to be  contacted.  You
should use  this setting for systems  that contact you but  which you never
contact.

You can  specify more than one  day/time combination in a  time string; use
commas to separate entries.

The following gives examples of time strings:

Wk2305-0855,Sa,Su2305-1655
     Weekdays  from 11:05  PM to  8:55 AM  the following  day; any  time on
     Saturday; and Sunday from 11:05 PM to 4:55 PM the following day.

Wk0905-2255,Su1705-2255
     Weekdays from  9:05 AM to 10:55  PM, and Sunday from  5:05 PM to 10:55
     PM.  The remote system cannot be called on Saturday.

The following commands control when remotesystem is contacted:

time timestring [retry]
     Specify  when your  system can call  remotesystem. timestring  gives a
     time  string;  the  section  Time  Strings,  above, describes  how  to
     construct one.   retry, if used, defines how long  to wait before your
     system attempt to call  remotesystem again.  The default time for each
     remotesystem is Never.

     The optional  argument retry sets  many minutes your  system will wait
     before  it attempts  to  recontact remotesystem,  should  a call  made
     during  timestring fail.   If  retry is  not defined,  uucico uses  an
     exponentially increasing retry time: after each failure the next retry
     period is longer.

     The description  of remotesystem  can contain multiple  time commands.
     uucico will  call remotesystem  if the  current time matches  the time
     defined by any of them.

timegrade grade timestring [retry]
     This command tells  uucico to call remotesystem only if  a file with a
     grade  greater than  or equal  to grade is  awaiting transfer  to that
     system.

     grade gives  the grade  of file  to await.  It  is a single  letter or
     digit, from `0' to `9', `A' to `Z', and `a' to `z', in this order from
     highest grade to lowest.

     timestring gives  the period  of time  to which this  command applies.
     retry gives the length of time, in minutes, that your system must wait
     before it recontacts remotesystem should a call made during timestring
     fail.

     The command  time is equivalent to the command  timegrade with a grade
     of  `z', which  permits all  jobs to  be run.   The command  uucico -S
     overrides grade; the command uucico -s does not.

     The grade  applies only  to calls made  to remotesystem, not  to calls
     that it makes to you.

     The description of remotesystem can have multiple timegrade commands.

     The command call-timegrade, described below, complements this command.

call-timegrade grade timestring
     This command tells uucico to ask remotesystem to execute only the jobs
     with a  grade of grade  or higher, should it  call remotesystem during
     the period  of time defined  in timestring. This  commands complements
     the command  timegrade: while timegrade  limits what your  system does
     with  the  remote   system,  call-timegrade  attempts  to  limit  what
     remotesystem does to your system.

     grade gives the grade of the job to send.  It is be a single letter or
     digit, from `0' to `9', `A' to `Z', and `a' to `z', in this order from
     highest grade to lowest.  timestring gives the period of time to which
     this command applies.  It is a time string, as defined above.

     The description of  a remotesystem can contain multiple call-timegrade
     commands.

     Please note  that not every  implementation of UUCP  will cooperate in
     setting grades to its jobs.  If this command does not appear, or if no
     time string matches, the remote system can send whatever grade of work
     it chooses.

Retries and Waiting

The following  commands define how  often uucico will try  to do something,
and how long it will wait for a particular event to happen.

max-retries retries
     Recontact a  remotesystem no more  than than retries  times during any
     time time period.  The default number of retries is 26.

success-wait seconds
     Wait  seconds before  recontacting a  remotesystem after  a successful
     call.   This  limits  the  number  of  times a  remotesystem  will  be
     contacted during a given time period.  The default is zero.

Ports and Telephones

The  following commands  govern how  uucico selects  a port  and telephones
remotesystem.

address ip_address|domain_name
     Name a  remote system to  contact a TCP/IP network.   This command can
     name the  remote system  to contact either  by its domain  name (e.g.,
     lepanto.com) or its IP address (e.g., 199.3.32.100).  Note that if the
     port named  by port  command is  not a TCP  port, uucico  ignores this
     command.

baud speed
speed speed
     Set the  speed (or ``baud rate'') at which  to call remotesystem. This
     tells  uucico to  try every  port  defined in  file /usr/lib/uucp/port
     until it finds an unlocked port that runs at speed.

     If the  description of remotesystem  contains both the  baud and port,
     uucico uses both when it selects a port.

     If you wish to try multiple speeds when contacting a remotesystem, you
     must embed each baud command in its own set of alternate commands.

     uucico does not use a default speed.  The command

         baud 0

     tells uucico  to use  the ``natural'' speed  of a port  (whatever that
     is), and override and overrides any baud or speed commands that appear
     in the global defaults.

     To  place a  call to  a remotesystem, its  description (or  the global
     defaults) must name a port through which to dial out, either with baud
     or with the command port (described below).

port portname
     Name or describe the port through which to contact remotesystem.

     If used with only one  argument, uucico assumes that that string names
     a port  defined in the file /usr/lib/uucp/port.  portname may point to
     more  than one  physical device;  uucico tries each  in turn  until it
     finds one that is unlocked.

     If used  with more  than one string,  uucico assumes that  the strings
     define a port, in the same way as done in the file port.

     To  place a  call to  a remotesystem, its  description (or  the global
     defaults) must name a port through which to dial out, either with port
     or with the command baud (described above).

phone number
     Give the  telephone number  of remotesystem.  An `=' character  in the
     telephone number tells uucico to wait for a secondary dial tone.  A `-
     ' character tells uucico to pause for one second while dialing

     The  description  of  a remotesystem  can  have  more  than one  phone
     command, one for each number  at which you can call that remotesystem.
     If  you   want  your  system  to   telephone  remotesystem,  then  its
     description must contain at least one phone command.

Protocols and Protocol Variables

The command

    protocol codes

names the  communication protocols to use with  remotesystem. code must one
or more lower-case  letters, each of which names a  protocol.  If more than
one protocol is named, uucico considers them in the order in which you give
them.

uucico recognizes the following protocol codes:

t
e  These protocols  perform no  checking at all.   They are intended  to be
   used over  a communication path  that has end-to-end  reliability, e.g.,
   TCP.  uucico  will consider them only  when it is talking  to a TCP port
   that is both reliable and eight-bit.

i  This is a bidirectional  protocol; that is, your system and remotesystem
   can  both send  and receive  simultaneously.   It requires  an eight-bit
   connection.  This  protocol is preferred for a  serial connection, as it
   offers the fastest transmission of data.

g  This   is  the   first,  and   the   commonest  UUCP   protocol.   Every
   implementation of  UUCP supports this  protocol; some support  no other.
   It requires an eight-bit  connection.  For a detailed description of how
   this protocol works, see the article by Steven Baker, cited below.

G  This is the System V Release 4 version of the g protocol.

a  This mimics the  Z-Modem protocol.  It requires an eight-bit connection;
   but  unlike the  g and  i protocols,  it works  even if  certain control
   characters  cannot   be  transmitted.   (Code  for   this  protocol  was
   contributed by Doug Evans.)

j  This is  a variant of  the i protocol,  which can avoid  certain control
   characters.  The set of characters it  avoids can be set by a parameter.
   It is useful over a  eight-bit connection that will not transmit certain
   control characters.

f  This protocol  supports X.25 connections.   It checksums each  file as a
   whole,  so any  error causes  the entire file  to be  retransmitted.  It
   requires a  reliable connection, but uses  only seven-bit transmissions.
   It is  a streaming  protocol; therefore,  you can use  it with  a serial
   port, but the port must be completely reliable and flow controlled.

If  you do  not use  the  protocol command  to specify  a protocol,  uucico
considers the protocols in the order  given above, and chooses one based on
the  characteristics of  the port  and  the dialer  specified in  the files
/usr/lib/uucp/port and /usr/lib/uucp/dial.  The port and dial must meet the
requirements  of   a  protocol  before  uucico   will  consider  it  during
negotiation with remotesystem.

If neither the seven-bit nor the  reliable command is used, uucico will use
the i  protocol (subject,  of course,  to what is  supported by  the remote
system; you  cannot assume  that all systems  support the i  protocol).  No
current  protocol can  be used  with a  port for  which you  have specified
seven-bit true  and reliable false.  You must use the  protocol command for
the system, or uucico will select no protocol at all.  (The only reasonable
choice would be protocol f.) You can use the command

    protocol-parameter protocol parameter [argument ... ]

to modify a protocol's default parameters.

The i protocol recognizes the following parameters:

window size
     Request  that remotesystem  use  a size  window, between  one and  31,
     inclusive.  The default is 16.

packet-size size
     Request that remotesystem use a  packet of size bytes, between one and
     4,095, inclusive.  The default is 1,024.

remote-window size
     Ignore the  window size  requested by  remotesystem, and instead  us a
     window of size.  The default is zero, which means  that the request of
     remotesystem is honored.

remote-packet-size size
     Ignore the  packet size requested  by remotesystem, and  instead use a
     packet  of size  bytes.  The  default  is zero,  which means  that the
     request of remotesystem is honored.

sync-timeout seconds
     Wait seconds for a SYNC packet from remotesystem. The default is ten.

sync-retries number
     Resend a  SYNC packet number  times before giving up.   The default is
     six.

timeout seconds
     Wait seconds  for an  incoming packet  before sending a  NAK (negative
     acknowledgement) The default is ten.

retries number
     Resend a packet  or negative acknowedgement number times before giving
     and closing the connection.  The default is six.

errors number
     Quit after number errors have occurred.  The default is 100.

error-decay number
     Decrease the  count of errors  by one after  receiving number packets.
     This  keeps   occasional  errors  from  accumulating   during  a  long
     conversation,  and   so  aborting   what  is  actually   a  successful
     transmission.  The default is ten.

ack-frequency number
     Send an  acknowledgement after receiving number  packets.  By default,
     this is set to half the requested size of the window.

The protocols g and G recognize the following parameters:

window size
     Request that  remotesystem use a  size window, between  one and seven,
     inclusive.  The default is seven.

packet-size size
     Request that remotesystem use a  packet size of size bytes.  size must
     be a  power of two, between  32 and 4,096, inclusive.   The default is
     64,  which  is the  only  packet  size supported  by  many older  UUCP
     packages.

startup-retries number
     Retry the entire initialization sequence number times before quitting.
     The default is eight.

init-retries number
     Retry  one phase  of the initialization  sequence number  times before
     quitting.  The default is four.

init-timeout seconds
     Wait for  seconds before  timing out  one phase of  the initialization
     sequence.  The default is ten.

retries number
     Resend  a  packet  or a  request  for  a  packet  number times  before
     quitting.  The default is six.

timeout seconds
     Wait for seconds for a packet or an acknowledgement before timing out.
     The default is ten.

garbage number
     Drop  the connection after  receiving number  unrecognized characters.
     number must be larger than the packet size.  The default is 10,000.

errors number
     Quit  after number  errors  have occurred.   Errors include  malformed
     packets, out-of-order packets,  bad checksums, and packets rejected by
     the remote system.  The default is 100.

error-decay number
     Decrease the  count of errors  by one after  receiving number packets.
     This  keeps   occasional  errors  from  accumulating   during  a  long
     conversation,  and   so  aborting   what  is  actually   a  successful
     transmission.  The default is ten.

remote-window size
     Ignore the  window size  requested by  remotesystem, and instead  us a
     window of size.  The default is zero, which means  that the request of
     remotesystem is honored.

remote-packet-size size
     Ignore the  packet size requested  by remotesystem, and  instead use a
     packet  of size  bytes.  The  default  is zero,  which means  that the
     request of remotesystem is honored.

short-packets true|false
     If true,  optimize transmission by sending  shorter packets when there
     is  less  data  to  send.   This  confuses some  UUCP  packages;  when
     connecting to such a package, this parameter must be set to false. The
     default is true for the g protocol and false for the G protocol.

The  a protocol  mimics the  Z-modem protocol.   It supports  the following
parameters: All  take numeric  arguments, except for  escape-control, which
takes a Boolean argument:

timeout seconds
     Wait seconds for a packet before timing out.  The default is ten.

retries number
     Resend a packet number times before quitting.  The default is ten.

startup-retries number
     Retry  sending   the  initialization  sequence   number  times  before
     quitting.  The default is four.

garbage number
     Drop  the connection after  receiving number  unrecognized ``garbage''
     characters.  number must be  larger than the packet size.  The default
     is 2,400.

send-window number
     Send  number characters  before waiting  for an  acknowledgement.  The
     default is 1,024.

escape-control true|false
     If true, uucico  can use the protocol over a  connection that does not
     transmit  certain  control  characters,  such  as  XON  or  XOFF.  The
     connection must still transmit eight-bit characters other than control
     characters.  The default is false.

The  j protocol  can be  used over  an eight-bit  connection that  will not
transmit certain control characters.  It accepts the same parameters as the
i protocol, plus the following:

avoid string
     Avoid  every character  defined in string.  string can  contain escape
     sequences, as defined above  for the chat script.  Each character must
     be a non-printable ASCII character (i.e., ASCII values less than 32 or
     greater  than  126).  Each  must  be defined  using  using the  escape
     sequence \DDD, where DDD gives three octal digits.

     The default value is \021\023 (i.e., XON and XOFF).  If the package is
     configured to  use HAVE_BSD_TTY,  then you may  have to avoid  \377 as
     well.

The f  protocol is intended for use with  error-correcting modems only.  It
checksums each file  as a whole, so any error  causes the entire file to be
retransmitted.  It recognizes the following parameters:

timeout seconds
     Wait seconds before timing out.  The default is 120.

retries number
     Retry sending  a file  number times  before quitting.  The  default is
     two.

The protocols t and e recognize the following parameter:

timeout seconds
     Wait seconds before timing out.  The default is 120.

Note   that  the   command  protocol-parameter   can   be  used   in  files
/usr/lib/uucp/dial and  /usr/lib/uucp/port as well as in sys.  In case of a
conflict  between the  entries in  these files, the  entries in  dial takes
precendence; then those in port. The entries in sys have lowest precedence.

File Transfers

The following commands help to control the transfer of files.

send-request yes|no
     Set  whether remotesystem  can request  files  from your  system.  The
     default is yes, that is, remotesystem may request files.

receive-request yes|no
     Set whether  remotesystem can send files to  your system.  The default
     is yes, that is, remotesystem may send files.

request yes|no
     This combines the commands send-request and receive-request into one.

call-transfer yes|no
     Set whether  your system  may transfer  files to remotesystem  when it
     calls remotesystem. The default is yes.

called-transfer yes|no
     Set  whether  your  system may  transfer  files  to remotesystem  when
     remotesystem calls your system.  The default is yes.

transfer yes|no
     This combines commands call-transfer and called-transfer into one.

call-local-size number timestring
     Send  or receive  no file  larger than number  bytes when  your system
     calls remotesystem during the  time defined in timestring. You can use
     this command to help limit the length of a call made during times when
     toll  charges are  higher.  The  description of  a system  may contain
     multiple call-local-size  commands, one  for each period  during which
     you wish to limit activity.  The default is to have no limit.

     Please  note that  the size-control commands,  are guaranteed  only to
     limit the size of files being  sent by your system.  The size of files
     being sent  from remotesystem  can be checked  if the other  system is
     running  the  Taylor   UUCP  package.   Other  UUCP  packages  do  not
     understand a maximum-size request,  nor do they inform this package of
     the size of the files they are sending.

call-remote-size number timestring
     Limit to number bytes the size of a file that can be fetched by remote
     request  (either by  your  system on  remotesystem  or by  it on  your
     system) when your system calls remotesystem during the time defined in
     timestring.  The description  of a  remotesystem can  contain multiple
     call-local-size commands, one for each period during which you wish to
     limit activity.  The default is to have no limit.

called-local-size number timestring
     Send or  receive no  file larger  than number bytes  when remotesystem
     calls  your  system   during  the  time  defined  in  timestring.  The
     description of a system may contain multiple call-local-size commands,
     one  for each  period during  which you wish  to limit  activity.  The
     default is to have no limit.

called-remote-size number timestring
     Limit to number bytes the size of a file that can be fetched by remote
     request  (either by  your  system on  remotesystem  or by  it on  your
     system) when remotesystem calls your system during the time defined in
     timestring.  The description  of a  remotesystem can  contain multiple
     call-local-size commands, one for each period during which you wish to
     limit activity.  The default is to have no limit.

local-send directorylist ...
     Limit to directorylist the directories from which your system can send
     files  to  remotesystem.  Each  directory  in  directorylist  must  be
     separated by  white space.   You can  use a tilde  `~' for  the public
     directory,  i.e., /usr/spool/uucppublic.  Listing  a directory  within
     directorylist lets  your system send  all files within  that directory
     and its subdirectories.

     Prefixing  a  directory with  an  exclamation  point `!'  specifically
     excludes it and its  subdirectories from being sent.  For example, the
     command

         local-send /v/fwb !/v/fwb/Personal

     means  that your  system can  send  all files  in directory  /v/fwb to
     remotesytem except for the files in directory /v/fwb/Personal.

     uucico reads directorylist from  left to right, and the last directory
     to apply  takes effect.  Therefore,  you should list  directories from
     top down.   The default is  the root directory, i.e.,  your system can
     send any file to remotesystem.

remote-send directorylist
     Limit  to directorylist  the directories  from which  remotesystem can
     request files.  The default is /usr/spool/uucppublic.

local-receive directorylist
     Limit  to directorylist  the directories  into  which your  system can
     write   files   requested    from   remotesystem.   The   default   is
     /usr/spool/uucppublic.

remote-receive directorylist
     Limit to directorylist the directories on remotesystem into which your
     system can  write files.   The default is  /usr/spool/uucppublic. This
     command cannot  override permissions  that localsystem has  granted to
     your system.

forward-to systemlist
     Limit the  systems to  which your system  will forward files  to those
     named  in systemlist.  A systemlist of  ANY lets  remotesystem forward
     files through your system to any  system it wants.  The default is not
     to  permit  forwarding to  other  systems.  Note  that  if you  permit
     remotesystem  to   execute  the  command  uucp   on  your  system,  it
     effectively has permission to forward to any system.

forward-from systemlist
     Limit the  systems from which remotesystem  request files through your
     system  to  those  named  in  systemlist.  A systemlist  of  ANY  lets
     remotesystem request  files from  any system.   The default is  not to
     permit remotesystem to request  files from anywhere.  Note that if you
     permit remotesystem  to execute  the command  uucp on your  system, it
     effectively has permission to fetch files through your system from any
     other system.

forward systemlist
     This command combines the commands forward-to and forward-from.

Miscellaneous Commands

The following gives miscellaneous commands that can be used in sys:

sequence yes|no
     If true, this commands tells uucico to use the conversation sequencing
     for   remotesystem.   This  means   that   if  somebody   impersonates
     remotesystem and  logs into your system, that  fact will be discovered
     the next time remotesystem actually calls.  The default is false.

command-path path
     Limit  to path  the  directories that  a command  file forwarded  from
     remotesystem  can search  for  commands to  execute.  The  directories
     named in path must be separated by white space.

commands commandlist
     Limit the  commands that  remotesystem can  execute on your  system to
     those  named  in  commandlist.  A  commandlist ALL  lets  remotesystem
     execute all programs on your system.  The default is rnews rmail.

free-space number
     This command  tells uucico always to leave free  number bytes of space
     in a  file system.  This  command ensures that uucico  will not permit
     remotesystem to fill up your file  system.  If an incoming file is too
     large to  leave number bytes  free on the file  system, uucico refuses
     the file or aborts its downloading.

     Note that not every version of UUCP supports this.

pubdir directory
     Name  the public  directory  available to  remote  UUCP systems.   The
     default is /usr/spool/uucppublic.

debug activitylist
     Log  each  UUCP  activity  named  in  activitylist when  talking  with
     remotesystem. These  logs can help you debug  problems with uucico and
     cu. uucico recognizes the following activities:

          abnormal       chat                     handshake
          uucp-proto     proto                    port
          config         spooldir                 execute
          incoming       outgoing

     none tells uucico to log nothing.

max-remote-debug typelist
     Limit to typelist the types of debugging that remotesystem can request
     on your  system.  This command  is designed to  stop remotesystem from
     filling your disk with debugging information.

Defaults

The  following gives  the  default settings  for all  systems.  You  should
regard these  as appearing  at the  head of /usr/lib/uucp/sys,  even though
they do not explicit appear in that file:

    time Never
    chat "" \r\c ogin:-BREAK-ogin:-BREAK-ogin: \L word: \P
    chat-timeout 10
    callback n
    sequence n
    request y
    transfer y
    local-send /
    remote-send ~
    local-receive ~
    remove-receive ~
    commands rnews rmail
    max-remote-debug abnormal,chat,handshake

Example

The following  gives the entry in /usr/lib/uucp/sys  for the system mwcbbs,
which is the Mark Williams bulletin board:

    system mwcbbs
    time Any
    baud 2400
    port MODEM
    phone 17085590412
    chat "" \r\d\r in:--in: nuucp word: public word: serialnumber
    protocol g
    protocol-parameter g window 3
    protocol-parameter g packet-size 64
    myname bbsuser
    request yes
    transfer yes
    remote-send /usr/spool/uucppublic /tmp
    remote-receive /usr/spool/uucppublic /tmp
    commands rmail uucp

The following describes each command in detail:

system mwcbbs
     Name the sytem being described, in this case mwcbbs.

time Any
     Set the time  during your system can contact mwcbbs,  in this case any
     time.

baud 2400
     Set the speed at which your system can contact mwcbbs; here 2400 baud.

port MWCBBS
     Set the port  through which your system can dial  out to mwcbbs; here,
     port MWCBBS.  This port is defined in the file /usr/lib/uucp/port; for
     details on this file and how to modify its data, see the Lexicon entry
     for port.

phone 17085590412
     This gives the telephone number of mwcbbs.

chat '' '' \r\d\r in:--in: nuucp word: public word: serialnumber
     Give the chat script with which  your system logs into mwcbbs. See the
     section on  chat scripts, above, for details on  how to interpret this
     command.

protocol g
     Use the g protocol.

protocol-parameter g window 3
     Set the window used with protocol g to three.

protocol-parameter g packet-size 64
     Set the size of the packet used with protocol g to 64 bytes.

myname bbsuser
     Identify yourself to mwcbbs as user bbsuser.

request yes
     Let  mwcbbs send  files to  your system, and  request files  from your
     system.  Setting this to no would forbid mwcbbs to do so.

transfer yes
     Permit files  to be transferred  from your system to  mwcbbs, and vice
     versa, regardless of whether your system calls mwcbbs or vice versa.

remote-send /usr/spool/uucppublic /tmp
     Permit    mwcbbs   to    request   files    only    from   directories
     /usr/spool/uucppublic and /tmp.

remote-receive /usr/spool/uucppublic /tmp
     Limit  the  directories  into  which  your  system  will  write  files
     requested from mwcbbs to /usr/spool/uucppublic /tmp.

commands rmail uucp
     Limit the commands that mwcbbs can execute on your system to rmail and
     uucp.

See Also

Administering COHERENT,
dial,
port,
UUCP
Baker,  S.: From  UUCP to  eternity.  UNIX Review,  April 1993,  pp. 15-26.
Summarizes the history of UUCP and describes the working of the g protocol.

Notes

Only the superuser root can edit /usr/lib/uucp/sys.

The file sys supports many commands in addition to the ones described here.
This article  describes only those  commands that might be  used in typical
UUCP  connections.  For  more  information, see  the  original Taylor  UUCP
documentation, which is in the archive /usr/src/alien/uudoc104.tar.Z.