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 : 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#----------------------------------------------------------------------- 39# 40# FUNCTION: do_setup 41# 42#----------------------------------------------------------------------- 43 44do_setup() 45{ 46 47 # Start fingerd locally and remotely. 48 export TST_TOTAL=3 49 50 tst_setup 51 52 exists awk finger hostname netstat rsh whoami 53 54 LHOST=$(hostname) 55 LUSER=$(whoami) 56 RUSER=root 57 RHOST=${RHOST:-$(hostname)} 58 SLEEPTIME=${SLEEPTIME:-1} 59 60 exists awk finger netstat rsh whoami 61 62 [ "$LUSER" = "root" ] || end_testcase "MUST BE root to run the test!" 63 64 FINGER=$(netstat -a | grep ":finger" |awk '{print $6}') 65 if [ "$FINGER" != "LISTEN" ]; then 66 end_testcase "Please start fingerd locally." 67 fi 68 69 FINGER=$(rsh -n $RHOST netstat -a |grep ":finger"|awk '{print $6}') 70 if [ "$FINGER" != "LISTEN" ]; then 71 end_testcase "Please start fingerd on remote host." 72 fi 73} 74 75#----------------------------------------------------------------------- 76# FUNCTION: do_test1 77# PURPOSE: Run finger with no flags 78# INPUT: None. 79# OUTPUT: Error messages are logged for all discrepancies found. 80#----------------------------------------------------------------------- 81 82do_test1() 83{ 84 tst_resm TINFO "finger: do_test1 started" 85 86 finger @$LHOST 2>&1 1>/dev/null 87 [ $? = 0 ] || end_testcase "finger @$LHOST" 88 finger @$RHOST 2>&1 1>/dev/null 89 [ $? = 0 ] || end_testcase "finger @$RHOST" 90 91 # Testing finger command with user argument 92 93 finger $LUSER 2>&1 1>/dev/null || end_testcase "finger $LUSER" 94 if ! finger $LUSER@$LHOST 2>&1 1>/dev/null; then 95 end_testcase "finger $LUSER@$LHOST" 96 fi 97 finger $RUSER@$RHOST 2>&1 1>/dev/null || end_testcase "finger @$RUSER" 98} 99 100#----------------------------------------------------------------------- 101# FUNCTION: do_test2 102# PURPOSE: To run the "finger User@host" commands and verify that the 103# "finger" command is functioning properly. 104# INPUT: None. 105# OUTPUT: Error messages are logged for all discrepancies found. 106#----------------------------------------------------------------------- 107 108do_test2() 109{ 110 tst_resm TINFO "finger: do_test2 (-bad flag) started" 111 BADUSER="uuuu" 112 BADHOST="xxxx" 113 114 tst_resm TINFO "finger -badflag default " 115 finger -x 2> /dev/null && end_testcase "finger -x should fail" 116 117 tst_resm TINFO "finger -bad user " 118 [ "$(finger $BADUSER 2>&1 1>/dev/null)" ] || end_testcase "finger $BADUSER" 119 [ "$(finger @$BADHOST 2>&1 1>/dev/null)" ] || \ 120 end_testcase "finger @$BADHOST" 121 [ "$(finger $BADUSER@$BADHOST 2>&1 1>/dev/null)" ] || \ 122 end_testcase "finger $BADUSER@$BADHOST" 123} 124 125#----------------------------------------------------------------------- 126# FUNCTION: do_test3 127# PURPOSE: To run the "finger -flag User@Host" commands and verify that the 128# "finger" command is functioning properly. 129# INPUT: None. 130# OUTPUT: Error messages are logged for all discrepancies found. 131#----------------------------------------------------------------------- 132 133do_test3() 134{ 135 tst_resm TINFO "finger: do_test3 (-f flag) started" 136 137 tst_resm TINFO "finger -l : gives a long listing" 138 finger -l 2>&1 1>/dev/null || end_testcase "finger -l" 139 finger -l $LUSER 2>&1 1>/dev/null || end_testcase "finger -l $LUSER" 140 finger -l @$LHOST 2>&1 1>/dev/null || end_testcase "finger -l @$LHOST" 141 if ! finger -l $LUSER@$LHOST 2>&1 1>/dev/null; then 142 end_testcase "finger -l $LUSER@$LHOST" 143 fi 144 finger -l @$RHOST 2>&1 1>/dev/null || end_testcase "finger -l @$RHOST" 145 if ! finger -l $RUSER@$RHOST 2>&1 1>/dev/null; then 146 end_testcase "finger -l $RUSER@$RHOST" 147 fi 148 149 tst_resm TINFO "finger -m : assures that user is a user ID discretionary" 150 finger -m 2>&1 1>/dev/null || end_testcase "finger -m" 151 finger -m $LUSER 2>&1 1>/dev/null || end_testcase "finger -m $LUSER" 152 finger -m @$LHOST 2>&1 1>/dev/null || end_testcase "finger -m @$LHOST" 153 if ! finger -m $LUSER@$LHOST 2>&1 1>/dev/null; then 154 end_testcase "finger -m $LUSER@$LHOST" 155 fi 156 finger -m @$RHOST 2>&1 1>/dev/null || end_testcase "finger -m @$RHOST" 157 if ! finger -m $RUSER@$RHOST 2>&1 1>/dev/null; then 158 end_testcase "finger -m $RUSER@$RHOST" 159 fi 160 161 tst_resm TINFO "finger -p : suppresses printing of .plan files on long and \ 162 brief long formats" 163 finger -p 2>&1 1>/dev/null || end_testcase "finger -p" 164 finger -p $LUSER 2>&1 1>/dev/null || end_testcase "finger -p $LUSER" 165 finger -p @$LHOST 2>&1 1>/dev/null || end_testcase "finger -p @$LHOST" 166 if ! finger -p $LUSER@$LHOST 2>&1 1>/dev/null; then 167 end_testcase "finger -p $LUSER@$LHOST" 168 fi 169 finger -p @$RHOST 2>&1 1>/dev/null || end_testcase "finger -p @$RHOST" 170 if ! finger -p $RUSER@$RHOST 2>&1 1>/dev/null; then 171 end_testcase "finger -p $RUSER@$RHOST" 172 fi 173 174 tst_resm TINFO "finger -s : gives a short format list" 175 finger -s 2>&1 1>/dev/null || end_testcase "finger -s" 176 finger -s $LUSER 2>&1 1>/dev/null || end_testcase "finger -s $LUSER " 177 finger -s @$LHOST 2>&1 1>/dev/null || end_testcase "finger -s @$LHOST" 178 if ! finger -s $LUSER@$LHOST 2>&1 1>/dev/null; then 179 end_testcase "finger -s $LUSER@$LHOST" 180 fi 181 finger -s @$RHOST 2>&1 1>/dev/null || end_testcase "finger -s @$RHOST" 182 if ! finger -s $RUSER@$RHOST 2>&1 1>/dev/null; then 183 end_testcase "finger -s $RUSER@$RHOST" 184 fi 185 186} 187 188#----------------------------------------------------------------------- 189# FUNCTION: MAIN 190# PURPOSE: To invoke the functions to perform the tasks outlined in the 191# prologue. 192# INPUT: None. 193# OUTPUT: None. 194#----------------------------------------------------------------------- 195. net_cmdlib.sh 196 197read_opts $* 198do_setup 199for TST_COUNT in 1 2 3; do 200 eval "do_test$TST_COUNT" 201 sleep $SLEEPTIME 202done 203end_testcase 204