#!/bin/sh # # # Copyright (c) International Business Machines Corp., 2000 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # # FILE : rusers # # TEST DESCRIPTION : Basic test for the `rusers` command. # # SETUP: The home directory of root on the machine exported as "RHOST" # MUST have a ".rhosts" file with the hostname of the machine # where the test is executed. # # HISTORY: # 04/18/01 Robbie Williamson (robbiew@us.ibm.com) # -Written # # CMD FLAG ARGS # rusers # rusers RHOST # rusers -a # rusers -a RHOST # rusers -l # rusers -l RHOST # rusers bogus_host # rusers -bogus_flag #*********************************************************************** #Uncomment line below for debug output. #trace_logic=${trace_logic:-"set -x"} $trace_logic this_file=${0##*/} TC=rusers TCtmp=${TCtmp:=`pwd`} TCbin=${TCbin:=`pwd`} TCsrc=${TCsrc:=$TCbin} LUSER=${LUSER:=root} RHOST=${RHOST:=`hostname`} CLEANUP=${CLEANUP:="ON"} PID=0 export TCID=$TC export TST_TOTAL=1 export TST_COUNT=1 #============================================================================= # FUNCTION NAME: do_test # # FUNCTION DESCRIPTION: Perform the test # # PARAMETERS: None. # # RETURNS: None. #============================================================================= do_test() { $trace_logic echo "Checking for rusersd on $RHOST" rpcinfo -u $RHOST rusersd > /dev/null 2>&1 if [ $? -ne 0 ]; then echo "Attempting to start rusersd on $RHOST" rsh -n -l root $RHOST "/usr/sbin/rpc.rusersd &" [ $? -eq 0 ] || end_testcase "rusersd is inactive on $RHOST" PID=`rsh -n $RHOST ps -ewf | grep rusersd | awk '{print $2 }'` echo "ruserd started on $RHOST" fi #RHOST=`echo $RHOST | cut -d. -f1` //The use is depriciated as it fails when RHOST is set to an IP address # //Pointed out by "Ambar Seksena" echo "Test rusers with defaults...please be patient" # rusers with no options broadcasts over the net and reports # responses as it receives them. Time-out for responses is approx. 2 minutes. rusers > /dev/null [ $? -eq 0 ] || end_testcase "rusers with defaults - failed" echo "Test rusers with options set...please be patient" # Go through matrix of rusers options: rusers $RHOST > /dev/null [ $? -eq 0 ] || end_testcase "rusers $RHOST - failed" rusers -a $RHOST > /dev/null [ $? -eq 0 ] || end_testcase "rusers -a $RHOST - failed" rusers -l > /dev/null [ $? -eq 0 ] || end_testcase "rusers -l - failed" rusers -l $RHOST > /dev/null [ $? -eq 0 ] || end_testcase "rusers -l $RHOST - failed" echo "Test rusers with bad options" rusers bogushost > /dev/null 2>&1 [ $? -eq 1 ] || end_testcase "rusers should fail" rusers -bogusflag > /dev/null 2>&1 [ $? -eq 1 ] || end_testcase "rusers - should fail" } #============================================================================= # FUNCTION NAME: do_cleanup # # FUNCTION DESCRIPTION: Clean up # # PARAMETERS: None. # # RETURNS: None. #============================================================================= do_cleanup() { $trace_logic if [ "$PID" != 0 ]; then # Kill rusersd on remote machine rsh -n $RHOST kill -9 $PID echo "rusersd daemon stopped on $RHOST" fi } #============================================================================= # FUNCTION NAME: end_testcase # # FUNCTION DESCRIPTION: Clean up # # PARAMETERS: string, IF AND ONLY IF the testcase fails # # RETURNS: None. #============================================================================= end_testcase() { $trace_logic echo "$this_file: doing $0." if [ "$CLEANUP" = "ON" ]; then do_cleanup fi [ $# = 0 ] && { tst_resm TPASS "Test Successful"; exit 0; } tst_resm TFAIL "Test Failed: $@" exit 1 } #============================================================================= # MAIN PROCEDURE #============================================================================= do_test end_testcase