NAME
rcmd - Allows execution of commands on a remote host
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
int rcmd (
char **host,
u_short port,
char *local_user,
char *remote_user,
char *command,
int *err_file_desc );
PARAMETERS
host Specifies the name of a remote host that is listed
in the /etc/hosts file. If the specified name of
the host is not found in this file, the rcmd()
function fails. The function sets the host parame-
ter to be the fully qualified host name.
port Specifies the well-known port to use for the con-
nection. The /etc/services file contains the
DARPA Internet services, their ports, and socket
types.
local_user
Points to user names that are valid at the local
host. Any valid user name can be given.
remote_user
Points to user names that are valid at the remote
host. Any valid user name can be given.
command Specifies the name of the command to be executed
at the remote host.
err_file_desc
Specifies an integer that controls the set up of
communications channels. Integer options are as
follows:
o If a nonzero integer is specified, an auxili-
ary channel to a control process is set up,
and the error_file_desc parameter points to
the file descriptor for the channel. The
control process provides diagnostic output
from the remote command on this channel and
also accepts bytes as signal numbers to be
forwarded to the process group of the com-
mand.
o If 0 (zero) is specified, the standard error
(stderr) of the remote command is the same as
the standard output (stdout). No provision
is made for sending arbitrary signals to the
remote process. However, it is possible to
send out-of-band data to the remote command.
DESCRIPTION
The rcmd() (remote command) function allows execution of
certain commands on a remote host that supports the rshd(),
rlogin(), and rpc() functions, among others.
The rcmd() function looks up a host via the name server or,
if the local name server is not running, via the /etc/hosts
file.If the connection succeeds, a socket in the Internet
domain of type SOCK_STREAM is returned to the calling pro-
cess and given to the remote command as standard input
(stdin) and standard output (stdout).
Always specify the host name. If the local domain and
remote domain are the same, specifying the domain parts is
optional. The rcmd() function returns the fully qualified
host name in the host parameter. To reuse the host name in
another rcmd() call, you should make a string copy of the
host parameter. For example:
rcmd ( &host, .... );
host = strdup(host);
...
rcmd ( &host, .... );
Only processes with an effective user ID of root user can
use the rcmd() function. An authentication scheme based on
remote port numbers is used to verify permissions. Ports in
the range from 0 to 1023 can only be used by a root user.
RETURN VALUES
Upon successful completion, the rcmd() function returns a
valid socket descriptor. The function returns -1 if the
effective user ID of the calling process is not root user,
if the function fails to resolve the host, or if it
encounters a socket connection error.
FILES
/etc/services
Contains the service names, ports, and socket
types.
/etc/hosts
Contains hostnames and their addresses for hosts
in a network.
/etc/resolv.conf
Contains the name server and domain name.
RELATED INFORMATION
Functions: gethostname(2), rresvport(3), ruserok(3),
sethostname(2)
Commands: rlogind(8), rshd(8), named(8)
Acknowledgement and Disclaimer