|
|
To make a service on your machine available to remote users through REXEC, you add the service to the REXEC database using the rxservice command.
The syntax of the
rxservice
command, when used to add a service, is as follows:
rxservice -a servicename [-d description] [-u] servicedef
See rxservice(1Mbnu) for an explanation of the options accepted by the rxservice command.
The REXEC facility defines the following macros, which can be used by any service. When you specify any of the following macros, REXEC substitutes appropriate values for the macros when a remote user makes a request for the service. The remote user is not required to enter the information as arguments to the invoking command.
Assume you want to define the
shutdown
command so that it can be used remotely.
The syntax of
shutdown
is as follows:
shutdown [-y] [-g grace_period] [-i init_state]
Let's call the remote shutdown service
rshutdown.
If you want
rshutdown
to support all the parameters to
shutdown
and in the same way (as options), then you would define
rshutdown
as follows:
rxservice -a rshutdown -d "rshutdown usage: rshutdown \
shutdown_options" 'cd/;/sbin/shutdown %*'
The macro
%*
means that
rshutdown
supports all options to
shutdown.
Suppose you were to define the
rshutdown
service as follows:
rxservice -a rshutdown -d "rshutdown usage: rshutdown \
minutes initstate" 'cd/;/sbin/shutdown -g%1 -i%2'
When defined this way, the macros indicate that the -g and -i operands (that is, values for %1 and %2, respectively) are required. If the remote user fails to supply a grace period operand or an init state operand, the rshutdown command will fail. Note that the service definition omits the -y option. Because the option has been omitted in the service definition, the rshutdown user cannot by-pass the prompt that asks him or her to confirm that the system should be shut down.
The following command line defines a service called
rlookup,
which accesses a local database via a command called
dblook:
rxservice -a rlookup -d 'Remote database lookup' \
'/usr/bin/dblook %*'
The following command line defines a service called
rsetup,
which modifies database
tables via a local command called
setdb.
The
setdb
command takes the address of the client machine
as a parameter.
rxservice -a rsetup -d 'remote setup service' \
'/usr/bin/setdb %m'