blob: f4533a2d4e71fec249f05353edce1173c1eda413 [file] [log] [blame]
#!/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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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
#=============================================================================
# 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" <ambar.seksena@calsoftinc.com>
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 <invalid hostname> should fail"
rusers -bogusflag > /dev/null 2>&1
[ $? -eq 1 ] || end_testcase "rusers -<invalid flag> 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 ] && { echo "Test Successfull"; exit 0; }
echo "Test Failed: $@"
exit 1
}
#=============================================================================
# MAIN PROCEDURE
#=============================================================================
do_test
end_testcase