finger01 revision a7a316c8f0a02e3780e9ba0c0da17a959a625850
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 pronram; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18# 19# 20# 21# FILE : finger 22# 23# PURPOSE: To test the basic functionality of the `finger` command. 24# 25# SETUP: The home directory of root on the machine exported as "RHOST" 26# MUST have a ".rhosts" file with the hostname of the machine 27# where the test is executed. Also, both machines MUST have 28# the fingerd daemon active (see inetd or xinetd config file). 29# 30# HISTORY: 31# 06/06/03 Manoj Iyer - manjo@mail.utexas.edu 32# - Ported tests to use test macro 33# 03/01 Robbie Williamson (robbiew@us.ibm.com) 34# -Ported 35# 36# 37#----------------------------------------------------------------------- 38# Uncomment line below for debugging information 39#trace_logic=${trace_logic:-"set -x"} 40$trace_logic 41 42RUSER=root 43RHOST=${RHOST:-`hostname`} 44LHOST=`hostname` 45SLEEPTIME=${SLEEPTIME:-1} 46LUSER=`id | tr -s '()' ' ' | awk '{print $2}'` 47 48this_file=${0##*/} 49 50#----------------------------------------------------------------------- 51# 52# FUNCTION: exists 53# 54#----------------------------------------------------------------------- 55 56exists() 57{ 58 for cmd in $1 59 do 60 which $cmd 2>&1 1>/dev/null 61 if [ $? -ne 0 ] 62 then 63 tst_resm TBROK "Test broke: command $cmd not found" 64 exit 1 65 fi 66 done 67} 68 69 70#----------------------------------------------------------------------- 71# 72# FUNCTION: do_setup 73# 74#----------------------------------------------------------------------- 75 76do_setup () 77{ 78 $trace_logic 79 80 # Start fingerd locally and remotely. 81 82 export TCID="finger01" 83 export TST_TOTAL=3 84 export TST_COUNT=1 85 86 exists "finger netstat awk rsh" 87 88 [ "$LUSER" = "root" ] || end_testcase "MUST BE root to run the test!" 89 90 FINGER=`netstat -a | grep "*:finger" |awk '{print $6}'` 91 if [ "$FINGER" != "LISTEN" ]; then 92 end_testcase "Please start fingerd locally." 93 fi 94 95 FINGER=`rsh -n $RHOST netstat -a |grep "*:finger"|awk '{print $6}'` 96 if [ "$FINGER" != "LISTEN" ]; then 97 end_testcase "Please start fingerd on remote host." 98 fi 99} 100 101#----------------------------------------------------------------------- 102# FUNCTION: do_test1 103# PURPOSE: Run finger with no flags 104# INPUT: None. 105# OUTPUT: Error messages are logged for all discrepancies found. 106#----------------------------------------------------------------------- 107 108do_test1() 109{ 110 $trace_logic 111 TCID="finger01" 112 TST_COUNT=1 113 tst_resm TINFO "finger: do_test1 started" 114 115 finger @$LHOST 2>&1 1>/dev/null 116 [ $? = 0 ] || end_testcase "finger @$LHOST" 117 finger @$RHOST 2>&1 1>/dev/null 118 [ $? = 0 ] || end_testcase "finger @$RHOST" 119 120 # Testing finger command with user argument 121 122 finger $LUSER 2>&1 1>/dev/null 123 [ $? = 0 ] || end_testcase "finger $LUSER" 124 finger $LUSER@$LHOST 2>&1 1>/dev/null 125 [ $? = 0 ] || end_testcase "finger $LUSER@$LHOST" 126 finger $RUSER@$RHOST 2>&1 1>/dev/null 127 [ $? = 0 ] || end_testcase "finger @$RUSER" 128} 129 130#----------------------------------------------------------------------- 131# FUNCTION: do_test2 132# PURPOSE: To run the "finger User@host" commands and verify that the 133# "finger" command is functioning properly. 134# INPUT: None. 135# OUTPUT: Error messages are logged for all discrepancies found. 136#----------------------------------------------------------------------- 137 138do_test2() 139{ 140 $trace_logic 141 142 TCID="finger02" 143 TST_COUNT=2 144 tst_resm TINFO "do_test2 $TC finger -bad flag" 145 BADUSER="uuuu" 146 BADHOST="xxxx" 147 148 tst_resm TINFO "finger -badflag default " 149 finger -x 2>&1 1>/dev/null 150 [ $? = 0 ] && end_testcase "finger -x should fail" 151 152 tst_resm TINFO "finger -bad user " 153 finger $BADUSER 2>&1 1>/dev/null 154 [ $? = 0 ] || end_testcase "finger $BADUSER " 155 finger @$BADHOST 2>&1 1>/dev/null 156 [ $? = 0 ] || end_testcase "finger @$BADHOST" 157 finger $BADUSER@$BADHOST 2>&1 1>/dev/null 158 [ $? = 0 ] || end_testcase "finger $BADUSER@$BADHOST" 159} 160 161#----------------------------------------------------------------------- 162# FUNCTION: do_test3 163# PURPOSE: To run the "finger -flag User@Host" commands and verify that the 164# "finger" command is functioning properly. 165# INPUT: None. 166# OUTPUT: Error messages are logged for all discrepancies found. 167#----------------------------------------------------------------------- 168 169do_test3() 170{ 171 $trace_logic 172 173 TCID="finger03" 174 TST_COUNT=3 175 tst_resm TINFO "do_test3 $TC finger -f flag" 176 177 tst_resm TINFO "finger -l : gives a long listing" 178 finger -l 2>&1 1>/dev/null 179 [ $? = 0 ] || end_testcase "finger -l" 180 finger -l $LUSER 2>&1 1>/dev/null 181 [ $? = 0 ] || end_testcase "finger -l $LUSER " 182 finger -l @$LHOST 2>&1 1>/dev/null 183 [ $? = 0 ] || end_testcase "finger -l @$LHOST" 184 finger -l $LUSER@$LHOST 2>&1 1>/dev/null 185 [ $? = 0 ] || end_testcase "finger -l $LUSER@$LHOST" 186 finger -l @$RHOST 2>&1 1>/dev/null 187 [ $? = 0 ] || end_testcase "finger -l @$RHOST" 188 finger -l $RUSER@$RHOST 2>&1 1>/dev/null 189 [ $? = 0 ] || end_testcase "finger -l $RUSER@$RHOST" 190 191 tst_resm TINFO "finger -m : assures that user is a user ID discretionary" 192 finger -m 2>&1 1>/dev/null 193 [ $? = 0 ] || end_testcase "finger -m" 194 finger -m $LUSER 2>&1 1>/dev/null 195 [ $? = 0 ] || end_testcase "finger -m $LUSER " 196 finger -m @$LHOST 2>&1 1>/dev/null 197 [ $? = 0 ] || end_testcase "finger -m @$LHOST" 198 finger -m $LUSER@$LHOST 2>&1 1>/dev/null 199 [ $? = 0 ] || end_testcase "finger -m $LUSER@$LHOST" 200 finger -m @$RHOST 2>&1 1>/dev/null 201 [ $? = 0 ] || end_testcase "finger -m @$RHOST" 202 finger -m $RUSER@$RHOST 2>&1 1>/dev/null 203 [ $? = 0 ] || end_testcase "finger -m $RUSER@$RHOST" 204 205 tst_resm TINFO "finger -p:suppresses printing of .plan files on long and brief long formats" 206 finger -p 2>&1 1>/dev/null 207 [ $? = 0 ] || end_testcase "finger -p" 208 finger -p $LUSER 2>&1 1>/dev/null 209 [ $? = 0 ] || end_testcase "finger -p $LUSER " 210 finger -p @$LHOST 2>&1 1>/dev/null 211 [ $? = 0 ] || end_testcase "finger -p @$LHOST" 212 finger -p $LUSER@$LHOST 2>&1 1>/dev/null 213 [ $? = 0 ] || end_testcase "finger -p $LUSER@$LHOST" 214 finger -p @$RHOST 2>&1 1>/dev/null 215 [ $? = 0 ] || end_testcase "finger -p @$RHOST" 216 finger -p $RUSER@$RHOST 2>&1 1>/dev/null 217 [ $? = 0 ] || end_testcase "finger -p $RUSER@$RHOST" 218 219 tst_resm TINFO "finger -s : gives a short format list" 220 finger -s 2>&1 1>/dev/null 221 [ $? = 0 ] || end_testcase "finger -s" 222 finger -s $LUSER 2>&1 1>/dev/null 223 [ $? = 0 ] || end_testcase "finger -s $LUSER " 224 finger -s @$LHOST 2>&1 1>/dev/null 225 [ $? = 0 ] || end_testcase "finger -s @$LHOST" 226 finger -s $LUSER@$LHOST 2>&1 1>/dev/null 227 [ $? = 0 ] || end_testcase "finger -s $LUSER@$LHOST" 228 finger -s @$RHOST 2>&1 1>/dev/null 229 [ $? = 0 ] || end_testcase "finger -s @$RHOST" 230 finger -s $RUSER@$RHOST 2>&1 1>/dev/null 231 [ $? = 0 ] || end_testcase "finger -s $RUSER@$RHOST" 232 233} 234 235#============================================================================= 236# FUNCTION NAME: end_testcase 237# 238# FUNCTION DESCRIPTION: Clean up 239# 240# PARAMETERS: string, IF AND ONLY IF the testcase fails 241# 242# RETURNS: None. 243#============================================================================= 244 245end_testcase() 246{ 247 $trace_logic 248 tst_resm TINFO "$this_file: doing $0." 249 250 [ $# = 0 ] && { tst_resm TPASS "Test Successful"; exit 0; } 251 tst_resm TFAIL "test failed: $@" 252 exit 1 253} 254 255#----------------------------------------------------------------------- 256# FUNCTION: MAIN 257# PURPOSE: To invoke the functions to perform the tasks outlined in the 258# prologue. 259# INPUT: None. 260# OUTPUT: None. 261#----------------------------------------------------------------------- 262do_setup 263do_test1 264sleep $SLEEPTIME 265do_test2 266sleep $SLEEPTIME 267do_test3 268sleep $SLEEPTIME 269end_testcase 270