rwhod++ is usually run on a single host in the local network. The spool directory /usr/spool/rwho on this host can then be exported via NFS to any number of machines. However, to avoid byte-order problems and to reduce NFS traffic, it may be a good idea to periodically cache the rwho-output and ruptime-output on the system running rwhod++, and then on all client machines replace rwho and ruptime by trivial shell scripts that just cat(1) the cache files.
On startup, rwhod++ reads its arguments to build a list of hosts to contact. Each argument is either the name of a NIS netgroup or a filename. Arguments that begin with a slash character (`/') are considered filenames; each file holds one hostname per line (filenames must be absolute pathnames so that the files can be reopened once rwhod++ has changed the current directory to /usr/spool/rwho). The final list of hosts is then randomized to eliminate effects caused by netgroups with their host entries sorted by subnets.
rwhod++ cycles through the list of hosts built on startup, sending one rstat and one rusers RPC request to each host during each round. In the first pass, the hostnames are resolved and the portmapper on each host is contacted to obtain the port numbers for the RPC calls. rwhod++ collects the RPC replies asynchronously to avoid blocking on hosts that are not responding.
If no positive reply is received from a host after a certain number of requests, the host is reset. This causes the hostname to be resolved again and the remote portmapper to be (re-)contacted during the next round to take care of hosts that were rebooted or whose IP addresses have changed since rwhod++ was started.
rwhod++ -t 180 rwhohosts /usr/spool/rwho/etc/extra-hosts
This command line causes rwhod++ to read hostnames from the netgroup rwhohosts and, in addition, from the specified file. Each cycle through the list of hosts will take exactly three minutes.