rsh(1N) (TCP/IP) rsh(1N)
NAME
rsh - remote shell
SYNOPSIS
rsh [ -n ] [ -l username ] hostname command
rsh hostname [ -n ] [ -l username ] command
hostname [ -n ] [ -l username ] command
DESCRIPTION
rsh connects to the specified hostname and executes the specified
command. rsh copies its standard input to the remote command, the
standard output of the remote command to its standard output, and the
standard error of the remote command to its standard error.
Interrupt, quit and terminate signals are propagated to the remote
command; rsh normally terminates when the remote command does.
If you omit command, instead of executing a single command, rsh logs
you in on the remote host using rlogin(1). Shell metacharacters
which are not quoted are interpreted on the local machine, while
quoted metacharacters are interpreted on the remote machine. See
EXAMPLES.
Hostnames are given in the hosts database, which may be contained in
the /etc/hosts file, the Internet domain name database, or both.
Each host has one official name (the first name in the database
entry) and optionally one or more nicknames. Official hostnames or
nicknames may be given as hostname.
If the name of the file from which rsh is executed is anything other
than rsh, rsh takes this name as its hostname argument. This allows
you to create a symbolic link to rsh in the name of a host which,
when executed, will invoke a remote shell on that host. By creating
a directory and populating it wih symbolic links in the names of
commonly used hosts, then including the directory in your shell's
search path, you can run rsh by typing hostname to your shell.
Each remote machine may have a file named /etc/hosts.equiv containing
a list of trusted hostnames with which it shares usernames. Users
with the same username on both the local and remote machine may rsh
from the machines listed in the remote machine's /etc/hosts file.
Individual users may set up a similar private equivalence list with
the file .rhosts in their home directories. Each line in this file
contains two names: a hostname and a username separated by a space.
The entry permits the user named username who is logged into hostname
to use rsh to access the remote machine as the remote user. If the
name of the local host is not found in the /etc/hosts.equiv file on
the remote machine, and the local username and hostname are not found
in the remote user's .rhosts file, then the access is denied. The
hostnames listed in the /etc/hosts.equiv and .rhosts files must be
8/91 Page 1
rsh(1N) (TCP/IP) rsh(1N)
the official hostnames listed in the hosts database; nicknames may
not be used in either of these files.
rsh will not prompt for a password if access is denied on the remote
machine unless the command argument is omitted.
OPTIONS
-l username
Use username as the remote username instead of your local
username. In the absence of this option, the remote username
is the same as your local username.
-n Redirect the input of rsh to /dev/null. You sometimes need
this option to avoid unfortunate interactions between rsh and
the shell which invokes it. For example, if you are running
rsh and invoke a rsh in the background without redirecting its
input away from the terminal, it will block even if no reads
are posted by the remote command. The -n option will prevent
this.
The type of remote shell (sh, rsh, or other) is determined by the
user's entry in the file /etc/passwd on the remote system.
EXAMPLES
The command:
rsh lizard cat lizard.file >> example.file
appends the remote file lizard.file from the machine called
``lizard'' to the file called example.file on the machine called
``example,'' while the command:
rsh lizard cat lizard.file ">>" lizard.file2
appends the file lizard.file on the machine called ``lizard'' to the
file another.lizard.file which also resides on the machine called
``lizard.''
FILES
/etc/hosts
/etc/passwd
SEE ALSO
rlogin(1), vi(1), named(1M), hosts(4), hosts.equiv(4).
NOTES
When a system is listed in hosts.equiv, its security must be as good
as local security. One insecure system listed in hosts.equiv can
compromise the security of the entire system.
Page 2 8/91
rsh(1N) (TCP/IP) rsh(1N)
You cannot run an interactive command [such as vi(1)]; use rlogin if
you wish to do so.
Stop signals stop the local rsh process only; this is arguably wrong,
but currently hard to fix for reasons too complicated to explain
here.
The current local environment is not passed to the remote shell.
Sometimes the -n option is needed for reasons that are less than
obvious. For example, the command:
rsh somehost dd if=/dev/nrmt0 bs=20b | tar xvpBf -
will put your shell into a strange state. Evidently, what happens is
that the tar terminates before the rsh. The rsh then tries to write
into the ``broken pipe'' and, instead of terminating neatly, proceeds
to compete with your shell for its standard input. Invoking rsh with
the -n option avoids such incidents.
This bug occurs only when rsh is at the beginning of a pipeline and
is not reading standard input. Do not use the -n if rsh actually
needs to read standard input. For example,
tar cf - . | rsh sundial dd of=/dev/rmt0 obs=20b
does not produce the bug. If you were to use the -n in a case like
this, rsh would incorrectly read from /dev/null instead of from the
pipe.
8/91 Page 3