1#!/bin/sh 2# 3# Copyright (c) International Business Machines Corp., 2000 4# 5# This program is free software; you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation; either version 2 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13# the GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write to the Free Software 17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18# 19# 20# 21# FILE : rwho 22# 23# PURPOSE: To test the basic functionality of the rwhod daemon using the 24# `rwho` and `ruptime` commands. 25# 26# SETUP: The home directory of root on the machine exported as "RHOST" 27# MUST have a ".rhosts" file with the hostname of the machine 28# where the test is executed. Also, both machines MUST have 29# the rwhod daemon installed. However, it does not need to be 30# active, the test will handle this. 31# 32# HISTORY: 33# 06/09 Manoj Iyer manjo@mail.utexas.edu 34# - Modified to use test harness API and also fix defects 35# 03/01 Robbie Williamson (robbiew@us.ibm.com) 36# -Ported 37# 38# 39#============================================================================== 40# error codes: 0 rwho/ruptime successful 41# 1 rwho failed no local and remote host in file 42# 2 ruptime failed no local and remote host in file 43#============================================================================== 44 45#----------------------------------------------------------------------- 46# 47# FUNCTION: do_setup 48# 49#----------------------------------------------------------------------- 50 51LHOST_PID="" 52RHOST_PID="" 53 54do_setup() 55{ 56 TCtmp=${TCtmp:-$LTPROOT/testcases/bin/$TC${EXEC_SUFFIX}$$} 57 58 SLEEPTIME=${SLEEPTIME:-5} 59 NUMLOOPS=${NUMLOOPS:-25} 60 OUTFILE=${OUTFILE:-$TCtmp/${TC}.out} 61 62 tst_setup 63 64 exists awk cut hostname killall ps rsh rwho 65 66 LHOST=`hostname | cut -f1 -d.` 67 RHOST=${RHOST:-$LHOST} 68 69 trap do_cleanup EXIT 70 71 if ! pgrep -x rwhod > /dev/null; then 72 tst_resm TINFO "Starting rwhod on $LHOST" 73 rwhod || end_testcase "Unable to start rwhod on $LHOST" 74 LHOST_PID=$(pgrep -x rwhod) 75 sleep $SLEEPTIME 76 fi 77 78 if [ "$(rsh -n -l root $RHOST pgrep -x rwhod)" == "" ]; then 79 tst_resm TINFO "Starting rwhod on $RHOST" 80 rsh -n -l root $RHOST /usr/sbin/rwhod 81 RHOST_PID=$(rsh -n -l root $RHOST pgrep -x rwhod) 82 if [ -z "$RHOST_PID" ]; then 83 end_testcase "Unable to start rwhod on $RHOST" 84 fi 85 sleep $SLEEPTIME 86 fi 87 88 RHOSTNAME=`rsh -n -l root $RHOST hostname | cut -f1 -d.` 89 if [ -z "$RHOSTNAME" ]; then 90 end_testcase "Unable to determine RHOSTNAME" 91 fi 92} 93 94#----------------------------------------------------------------------- 95# 96# FUNCTION: do_test 97# 98#----------------------------------------------------------------------- 99 100do_test() 101{ 102 while [ $TST_COUNT -le $NUMLOOPS ]; do 103 rwho -a > $OUTFILE 104 HOST=`grep $LHOST $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq` 105 [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in rwho outfile" 106 HOST=`grep $RHOSTNAME $OUTFILE | sed 's/[^ ]* *//; s/:.*//' | uniq` 107 [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in rwho outfile" 108 109 ruptime -a > $OUTFILE 110 HOST=`grep $LHOST $OUTFILE | sed 's/ .*//' | uniq` 111 [ "$HOST" = "$LHOST" ] || end_testcase "$LHOST is not in ruptime outfile" 112 HOST=`grep $RHOSTNAME $OUTFILE | sed 's/ .*//' | uniq` 113 [ "$HOST" = "$RHOSTNAME" ] || end_testcase "$RHOSTNAME is not in ruptime outfile" 114 115 tst_resm TINFO "Test $TST_COUNT of $NUMLOOPS complete" 116 incr_tst_count 117 done 118} 119 120#----------------------------------------------------------------------- 121# 122# FUNCTION: do_cleanup 123# 124#----------------------------------------------------------------------- 125 126do_cleanup() 127{ 128 if [ -n "$LHOST_PID" ]; then 129 tst_resm TINFO "Stopping rwhod on $LHOST" 130 killall rwhod 131 fi 132 133 if [ -n "$RHOST_PID" ]; then 134 tst_resm TINFO "Stopping rwhod on $RHOST" 135 rsh -n -l root $RHOST "killall rwhod" 136 fi 137 138 tst_cleanup 139} 140 141#----------------------------------------------------------------------- 142# 143# FUNCTION: MAIN 144# 145#----------------------------------------------------------------------- 146. net_cmdlib.sh 147 148read_opts $* 149do_setup 150do_test 151do_cleanup 152end_testcase 153