Provided by: xrsh_5.92-8_all 

NAME
xrsh - start an X program on a remote machine
SYNOPSIS
xrsh [ -help ] [ -version ] [ -l username ] [ -e rshprog ] [ -auth authtype ] [ -screen screen-# ] [
-pass envlist ] [ -debug ] [ -debug2 ] remote-host [ X-command [ arguments ... ] ]
DESCRIPTION
Xrsh runs the given X command on a remote host. It sets up the environment for that command such that it
will display its windows on the current server's screen by propagating the $DISPLAY environment variable.
If not specified, the default client is xterm. Xrsh automatically selects ssh(1), rsh(1), remsh(1) or
rcmd(1) to execute remote commands, depending on what is available the O/S environment.
Xrsh automatically handles authentication so that the remote client will be allowed to open windows on
the server. It does this in several different ways depending on the value of the $XRSH_AUTH_TYPE
environment variable or the -auth argument.
By default, xrsh will use xhost to enable the remote client to open a server connection. It can also be
told to use xauth to merge local keys into a remote authorization file. Or it can pass the $XAUTHORITY
environment variable to the remote host in order to share a common NFS mounted authority file. It can
also be directed to do nothing in the case where no explicit authorization is necessary.
Users who just want a remote terminal window might look at xrsh's sister command, xrlogin(1). Xrlogin
uses a locally running xterm to open an rlogin connection to a remote host. The decision on whether to
use "xrsh host xterm" or "xrlogin host" should be based on several factors. If X is unavailable on the
remote host or the local terminal emulator has better features, use xrlogin. In general, the author
recommends using xrsh over xrlogin in most situations.
If the command to execute on the remote host is an xterm, xrsh automatically passes the -name argument to
xterm with a value of "xterm-hostname" where hostname is the name of the remote host. This allows the
user to specify resources in their server's resource manager which are specific to xterms from a given
host. For example, this feature can be used to make all xterm windows from a given remote host be the
same color or use a specific font or start up in a specific place on the screen. Xrlogin passes the same
string so they are compatible in this regard. This feature can be overridden by specifying your own
-name argument on the xterm command line.
If the command to execute on the remote host is an xterm, xrsh specifies that the default title for the
new xterm will be "xterm@hostname" where hostname is the name of the remote host. This can also be
overridden by specifying your own -title argument on the xterm command line.
Xrsh is very careful not to leave any extra processes on either the local or remote machine waiting
around for the client to exit. In some remote environments (particularly some Sys V implementations of
csh and rsh), this is impossible and xrsh should be run as a background command.
OPTIONS
Note that xrsh options precede the given X command and its arguments.
-auth authtype
Choose what type of X authorization (or access control) is going to be used. Authtype can be one
of "xhost", "xauth", "xhost-xterminal", "environment", or "none". The default is xhost, but the
default can be set by setting the value of the environment variable $XRSH_AUTH_TYPE.
If xhost is specified and the X server is running on the local machine, xhost will be run locally
to enable the remote host to open an X connection. If the server is on a third host (not the one
where xrsh is running and not the one where you wish to run the command), rsh will be used to run
xhost on the server host to authorize the host where the command will be run.
If xauth is specified, then xrsh will merge the entries for the server from the local $XAUTHORITY
file into that of the remote host using rsh.
The authtype xhost-xterminal is intended for use by people using X terminals. If xhost-xterminal
is used, then the first time xrsh is run, it runs xhost locally to enable the remote host for
access. This should work since (theoretically) the first time it is run is on the XDMCP host for
the X terminal. From then on it propagates the name of that host to all remote hosts via the
environment variable $XHOST. In subsequent invocations from remote hosts, xrsh uses rsh to
connect to the host $XHOST and run xhost to enable new remote hosts.
Authtype "none" does no explicit work for access control. Use this if you don't enable access
control or if you use another mechanism for access control.
Finally, authtype "environment" automatically propagates the environment variable $XAUTHORITY to
remote hosts, assuming that it is an NFS mounted location that can be accessed from all hosts.
-debug Normally xrsh redirects standard input and standard output to /dev/null in an effort to cause
unneeded rshd and shell processes to exit. As a result, the user can't usually see any errors
that might occur (like a "Permission denied." from rsh). If you are having trouble getting xrsh
to work with a remote host, try giving the -debug switch to see if any errors are being generated.
-debug2
This switch causes xrsh to turn on the -x option in the shell so that the user can see every shell
command executed by xrsh. Only use this script if you are debugging the xrsh code itself.
-help Print out the argument list to standard output.
-l username
Use the -l switch to specify a different user name to use for logging in via rsh on the remote
host.
-e rshprog
The -e switch can be used to set a different remote shell program, e.g. ssh. The default is remsh
or rsh, depending on your system. This flag overrides $XRSH_RSH.
-pass envlist
Envlist is a quote delimited string naming an arbitrary set of environment variables to pass on to
the shell environment on the remote host. If one wanted to set $XRSH_AUTH_TYPE and $XAUTHORITY to
the remote host, one could use: -pass "XRSH_AUTH_TYPE XAUTHORITY". A default set of environment
variables to pass may be set using the environment variable $XRSH_ENVS_TO_PASS.
-screen screen-#
Specify a different screen on the server on which to display the remote client.
-version
Print out version information and exit.
ENVIRONMENT
The environment variables XRSH_AUTH_TYPE and XRSH_ENVS_TO_PASS which can be used to set switch defaults
are overridden if the equivalent switch is specified as well.
XAUTHORITY
The $XAUTHORITY environment variable is passed to the remote host if the authtype specified by
-auth or $XRSH_AUTH_TYPE is "environment".
XRSH_AUTH_TYPE
This environment variable can be used to specify the default type of authorization or access
control. The values it can be set to are the same as the values for the argument -auth.
XRSH_RSH
This variable can redefine the remote shell program to use, e.g. ssh.
XRSH_RSH_ERRORS
If the environment variable XRSH_RSH_ERRORS is set to the name of a file, any rsh errors will
appear in that file on the remote host. If that variable is unset, error messages will be thrown
away unless the -debug switch is given. (Note: don't use ~ in the filename because it will expand
to ~ on the local host, but try to put the errors in that file on the remote host.)
XRSH_ENVS_TO_PASS
COMMON PROBLEMS
Make sure your PATH environment variable on the remote host is set in your .cshrc or .bashrc so that rsh
programs have access to it. (/bin/sh and /bin/ksh users have a hard time time here since their shells
don't execute any init files under rsh. You can use the XRSH_ENVS_TO_PASS environment variable to pass
the PATH environment variable to the remote host. Optionally, you can type a full path to xrsh in that
case. (E.g. xrsh remote-host /usr/bin/X11/xterm))
Make sure your PATH environment variable on the remote host includes the directory containing the X
programs. This is often /usr/bin/X11 or /usr/local/bin/X11.
Make sure you have rsh configured to work on the remote host. You can test this by typing: rsh remote-
host echo '$PATH' This will prove that rsh works and show you the PATH that will be used on the remote
host. If you get "Permission denied." you probably need to update your ~/.rhosts file on the remote
host. See rlogin(1).
EXAMPLES
xrsh yoda
Start an xterm on the host yoda which displays on the current X server. Use xhost for access
control.
xrsh -auth xauth underdog emacs
Start an emacs on the host underdog. Merge xauth authorization entries for this server into the
authority file on the remote host.
xrsh -l mjd -auth none -pass XRSH_AUTH_TYPE -debug tigger xterm -fn 5x7
Start an xterm on the host tigger in a very small font, propagate the environment variable
$XRSH_AUTH_TYPE to the remote host, login to the remote host using the id "mjd", don't do any
specific authorization and don't redirect standard/error output to /dev/null so I can see any
errors.
BUGS
If the values of the environment variables specified in -pass or $XRSH_ENVS_TO_PASS contain quote
characters, xrsh will have difficulty.
If the remote host can't resolve the hostname of the server host (through /etc/hosts, DNS or NIS), the
remote client will not be able to open a connection to the server.
System V users may need to make the first line of the script begin with colon (:).
If you think you have found a bug, the first thing you should do is to check on ftp.x.org in the contrib
directory using anonymous FTP to see if there is a new version of xrsh there that already fixes the bug.
If not, send email to "jjd@jjd.com" and be sure to have the token xrsh somewhere in the Subject: line.
Be sure to report the operating system type and version at both ends of the xrsh connection and a
description of the command you are using and what authentication mode you are using.
SEE ALSO
xrlogin(1), rsh(1), xhost(1), xauth(1)
AUTHOR
James J. Dempsey <jjd@jjd.com> with help and suggestions from many people including
gildea@intouchsys.com, dm@bbn.com, dgreen@cs.ucla.edu and rosen@cns.bu.edu,
<eero@whitechapel.media.mit.edu>, and <martin@whitechapel.media.mit.edu>.
X Version 11 Release 6 XRSH(1)