Home | History | Annotate | Download | only in rusers
      1 #!/bin/sh
      2 #
      3 #
      4 #   Copyright (c) International Business Machines  Corp., 2000
      5 #
      6 #   This program is free software;  you can redistribute it and/or modify
      7 #   it under the terms of the GNU General Public License as published by
      8 #   the Free Software Foundation; either version 2 of the License, or
      9 #   (at your option) any later version.
     10 #
     11 #   This program is distributed in the hope that it will be useful,
     12 #   but WITHOUT ANY WARRANTY;  without even the implied warranty of
     13 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     14 #   the GNU General Public License for more details.
     15 #
     16 #   You should have received a copy of the GNU General Public License
     17 #   along with this program;  if not, write to the Free Software
     18 #   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     19 #
     20 #
     21 #
     22 #  FILE             : rusers
     23 #
     24 #  TEST DESCRIPTION : Basic test for the `rusers` command.
     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.
     29 #
     30 #  HISTORY:
     31 #    04/18/01 Robbie Williamson (robbiew (at] us.ibm.com)
     32 #      -Written
     33 #
     34 # CMD      FLAG      ARGS
     35 # rusers
     36 # rusers             RHOST
     37 # rusers    -a
     38 # rusers    -a       RHOST
     39 # rusers    -l
     40 # rusers    -l       RHOST
     41 # rusers             bogus_host
     42 # rusers   -bogus_flag
     43 #***********************************************************************
     44 #Uncomment line below for debug output.
     45 #trace_logic=${trace_logic:-"set -x"}
     46 
     47 $trace_logic
     48 this_file=${0##*/}
     49 
     50 TC=rusers
     51 TCtmp=${TCtmp:=`pwd`}
     52 TCbin=${TCbin:=`pwd`}
     53 TCsrc=${TCsrc:=$TCbin}
     54 LUSER=${LUSER:=root}
     55 RHOST=${RHOST:=`hostname`}
     56 CLEANUP=${CLEANUP:="ON"}
     57 PID=0
     58 export TCID=$TC
     59 export TST_TOTAL=1
     60 export TST_COUNT=1
     61 
     62 #=============================================================================
     63 # FUNCTION NAME:        do_test
     64 #
     65 # FUNCTION DESCRIPTION: Perform the test
     66 #
     67 # PARAMETERS:           None.
     68 #
     69 # RETURNS:              None.
     70 #=============================================================================
     71 do_test()
     72 {
     73 $trace_logic
     74 
     75 echo "Checking for rusersd on $RHOST"
     76 
     77 rpcinfo -u $RHOST rusersd > /dev/null 2>&1
     78 if [ $? -ne 0 ]; then
     79   echo "Attempting to start rusersd on $RHOST"
     80   rsh -n -l root $RHOST "/usr/sbin/rpc.rusersd &"
     81   [ $? -eq 0 ] || end_testcase "rusersd is inactive on $RHOST"
     82   PID=`rsh -n $RHOST ps -ewf | grep rusersd | awk '{print $2 }'`
     83   echo "ruserd started on $RHOST"
     84 fi
     85 
     86 #RHOST=`echo $RHOST | cut -d. -f1`   //The use is depriciated as it fails when RHOST is set to an IP address
     87 #                                    //Pointed out by "Ambar Seksena" <ambar.seksena (at] calsoftinc.com>
     88 
     89 echo "Test rusers with defaults...please be patient"
     90 # rusers with no options broadcasts over the net and reports
     91 # responses as it receives them. Time-out for responses is approx. 2 minutes.
     92 
     93 rusers > /dev/null
     94 [ $? -eq 0 ] || end_testcase "rusers with defaults - failed"
     95 
     96 echo "Test rusers with options set...please be patient"
     97 # Go through matrix of rusers options:
     98 
     99 rusers $RHOST > /dev/null
    100 [ $? -eq 0 ] || end_testcase "rusers $RHOST - failed"
    101 
    102 rusers -a $RHOST > /dev/null
    103 [ $? -eq 0 ] || end_testcase "rusers -a $RHOST - failed"
    104 
    105 rusers -l > /dev/null
    106 [ $? -eq 0 ] || end_testcase "rusers -l - failed"
    107 
    108 rusers -l $RHOST > /dev/null
    109 [ $? -eq 0 ] || end_testcase "rusers -l $RHOST - failed"
    110 
    111 echo "Test rusers with bad options"
    112 
    113 rusers bogushost > /dev/null 2>&1
    114 [ $? -eq 1 ] || end_testcase "rusers <invalid hostname> should fail"
    115 
    116 rusers -bogusflag > /dev/null 2>&1
    117 [ $? -eq 1 ] || end_testcase "rusers -<invalid flag> should fail"
    118 }
    119 
    120 #=============================================================================
    121 # FUNCTION NAME:        do_cleanup
    122 #
    123 # FUNCTION DESCRIPTION: Clean up
    124 #
    125 # PARAMETERS:           None.
    126 #
    127 # RETURNS:              None.
    128 #=============================================================================
    129 do_cleanup()
    130 {
    131     $trace_logic
    132 
    133     if [ "$PID" != 0 ]; then
    134         # Kill rusersd on remote machine
    135         rsh -n $RHOST kill -9 $PID
    136         echo "rusersd daemon stopped on $RHOST"
    137     fi
    138 }
    139 
    140 #=============================================================================
    141 # FUNCTION NAME:        end_testcase
    142 #
    143 # FUNCTION DESCRIPTION: Clean up
    144 #
    145 # PARAMETERS:           string, IF AND ONLY IF the testcase fails
    146 #
    147 # RETURNS:              None.
    148 #=============================================================================
    149 
    150 end_testcase()
    151 {
    152    $trace_logic
    153    echo "$this_file: doing $0."
    154    if [ "$CLEANUP" = "ON" ]; then
    155      do_cleanup
    156    fi
    157 
    158    [ $# = 0 ] && { tst_resm TPASS "Test Successful"; exit 0; }
    159    tst_resm TFAIL "Test Failed: $@"
    160    exit 1
    161 }
    162 
    163 #=============================================================================
    164 # MAIN PROCEDURE
    165 #=============================================================================
    166 
    167 do_test
    168 end_testcase
    169