xinetd_tests.sh revision a4f5e23bb7dbbe71a52bc89b43edea35e2567382
1c864960ed4bfa8d119afbc1a7f92be5ca590ec89subrata_modak#!/bin/sh 2fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj################################################################################ 3fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## ## 4fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## Copyright (c) International Business Machines Corp., 2001 ## 5fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## ## 6fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## This program is free software; you can redistribute it and#or modify ## 7fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## it under the terms of the GNU General Public License as published by ## 8fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## the Free Software Foundation; either version 2 of the License, or ## 9fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## (at your option) any later version. ## 10fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## ## 11fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## This program is distributed in the hope that it will be useful, but ## 12fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## 13fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## 14fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## for more details. ## 15fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## ## 16fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## You should have received a copy of the GNU General Public License ## 17fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## along with this program; if not, write to the Free Software ## 184548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## 19fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj## ## 20fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj################################################################################ 21fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 22fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# File : xinetd_tests.sh 23fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 24fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: Test Basic functionality of xinetd command. 25fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Test #1: xinetd starts programs that provide Internet services. 26fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 27fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Author: Manoj Iyer, manjo@mail.utexas.edu 28fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 29fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# History: Mar 04 2003 - Created - Manoj Iyer. 30fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 31fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: chk_ifexists 32fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 33fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Check if command required for this test exits. 34fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 35fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Input: - $1 - calling test case. 36fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - $2 - command that needs to be checked. 3737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# 38fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 39fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 40fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojchk_ifexists() 41fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 42a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu which $2 > $LTPTMP/tst_xinetd.err 2>&1 43a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 44fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 45fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 46fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL "$1: command $2 not found." 47fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 48fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 49fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 50fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 51fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 52fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: init 53fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 54fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Check if command required for this test exits. 5537550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# - Create temporary directories required for this test. 56fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - Initialize global variables. 5737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# 58fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 59fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 60fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojinit() 61fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 62fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Initialize global variables. 63fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj export TST_TOTAL=2 64fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj export TCID="xinetd" 65fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj export TST_COUNT=0 66fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 67fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Inititalize cleanup function. 68fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj trap "cleanup" 0 69fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 70fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # create the temporary directory used by this testcase 71fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ -z $TMP ] 72fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 73fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj LTPTMP=/tmp/tst_xinetd.$$ 74fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj else 75fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj LTPTMP=$TMP/tst_xinetd.$$ 76fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 77fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 78a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mkdir -p $LTPTMP > /dev/null 2>&1 79a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 80fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 81fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 82fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL "INIT: Unable to create temporary directory" 83fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 84fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 85fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 86d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun # sometimes the default telnet may be /usr/kerberos/bin/telnet 87d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun TELNET_COMM='/usr/bin/telnet' 88d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 89fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # check if commands tst_*, xinetd, awk exists. 90fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT tst_resm || return $RC 91fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT xinetd || return $RC 92fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT diff || return $RC 93d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun chk_ifexists INIT ip || return $RC 94d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun chk_ifexists INIT $TELNET_COMM || return $RC 95d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 96d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun IPV6_ENABLED=0 97d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun ip a | grep inet6 > /dev/null 2>&1 98d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $? -eq 0 ] 99d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 100d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun IPV6_ENABLED=1 101d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 102fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 1033db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Create custom xinetd.conf file. 1043db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # tst_xinetd.conf.1 config file has telnet service disabled. 105a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.conf.1 <<-EOF 1063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults 1073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1083db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun instances = 25 1093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_type = FILE /var/log/servicelog 1103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_success = HOST PID 111a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu log_on_failure = HOST 1123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun disabled = telnet 1133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1143db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 115a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 1163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 1173db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # tst_xinetd.conf.2 config file has telnet enabled. 118a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.conf.2 <<-EOF 1193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults 1203db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1213db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun instances = 25 1223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_type = FILE /var/log/servicelog 1233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_success = HOST PID 1243db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_failure = HOST 1253db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # disabled = telnet 1263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 1283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyunservice telnet 1293db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun socket_type = stream 1313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun protocol = tcp 1323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun wait = no 1333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun user = root 1343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun server = /usr/sbin/in.telnetd 1353db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun server_args = -n 1363db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun no_access = 1373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1383db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 139a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 140fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 141fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Create expected file with telnet disabled. 142a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.1 <<-EOF 143d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address 127.0.0.1: Connection refused 1443db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 145a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 146fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 147fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 148fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 149fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL \ 150fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1" 151fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 152fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 153fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 154d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 155d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 156a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.1.ipv6 <<-EOF 157d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address ::1: Connection refused 158d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF 159a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 160d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 161d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 162d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 163d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_brkm TBROK NULL \ 164d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1" 165d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 166d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 167d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 168fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Create expected file with telnet enabled. 169a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.2 <<-EOF 1703db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunTrying 127.0.0.1... 171d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to 127.0.0.1. 1723db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEscape character is '^]'. 1733db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunConnection closed by foreign host. 1743db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 175a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 176fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 177fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 178fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 179fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL \ 180d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2" 181fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 182fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 183fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 184d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 185d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 186a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.2.ipv6 <<-EOF 187d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunTrying ::1... 188d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to ::1. 189d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEscape character is '^]'. 190d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnection closed by foreign host. 191d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF 192a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 193d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 194d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 195d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 196d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_brkm TBROK NULL \ 197d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2.ipv6" 198d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 199d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 200d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 201fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 202fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 203fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 204fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 205fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: cleanup 206fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 20737550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Description: - remove temporaty files and directories. 208fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 209fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 210fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 211fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojcleanup() 212fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 2133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restore the original xinetd.conf if a back up exits. 2143db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ -f /etc/xinetd.conf.orig ] 2153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun mv /etc/xinetd.conf.orig /etc/xinetd.conf \ 217a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 218a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 2193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -ne 0 ] 2203db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2213db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TINFO $LTPTMP/tst_xinetd.err \ 2223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "CLEANUP: failed restoring original xinetd.conf RC=$RC. Details:" 2233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 2243db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 2253db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 2263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 2273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restoring original services 228a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu /etc/init.d/xinetd restart > $LTPTMP/tst_xinetd.err 2>&1 229a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 2303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -ne 0 ] 2313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TINFO $LTPTMP/tst_xinetd.err \ 2333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "CLEANUP: failed restoring original services RC=$RC. Details:" 2343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 2353db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 236fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 237fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # remove all the temporary files created by this test. 238fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "CLEAN: removing $LTPTMP" 239fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj rm -fr $LTPTMP 240fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 241fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 242fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 243fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: test01 244fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 245fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Test that xinetd reads the configuration file and starts or 246fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# stops services. 247fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - restart xinetd with configuration file with telnet disabled. 248fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - telnet to locahost should fail. 249fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - restart xinetd with configuration file with telnet enabled. 250fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - telnet to locahost should work. 25137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# 252fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 253fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 254fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01() 255fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 256fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj TCID=xinetd01 257fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj TST_COUNT=1 258fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj nhops=0 # Number of hops required to get to host. 259fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 260fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: restart xinetd with telnet disabled." 26137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman 2623db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # create a backup of the original xinetd.conf file. 263a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv /etc/xinetd.conf /etc/xinetd.conf.orig > $LTPTMP/tst_xinetd.err 2>&1 264a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 265fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 266fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 267fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 268fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed while backing up original xinetd.conf. Details" 269fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 270fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 271fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2723db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # install the new config file with telnet disabled. 273a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv $LTPTMP/tst_xinetd.conf.1 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1 274a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 275fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 276fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 277fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 278fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed installing new xinetd.conf in /etc. Details:" 279fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 280fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 281fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 282fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: new xinetd.conf installed with telnet disabled." 283fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2843db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 285fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2863db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restart xinetd to re-start the services 287a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu /etc/init.d/xinetd restart > $LTPTMP/tst_xinetd.out 2>&1 288a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 289fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 290fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 291fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.out \ 292fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: unable to restart service with telnet disabled. Details:" 293fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 2943db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 2953db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # even if xinetd restart has zero exit value, 2963db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # make certain there was no failure. 297a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1 298a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 2993db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -eq 0 ] 3003db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 3013db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err \ 3023db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd failed to restart. Details" 3033db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun return $RC 3043db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3053db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun RC=0 3063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TINFO \ 3073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd re-started successfully with telnet disabled." 3083db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 3113db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Not checking for exit code from telnet command because telnet is 3123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # not terminated by the test gracefully. 313d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 314d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 315d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun echo "" | $TELNET_COMM ::1 2>$LTPTMP/tst_xinetd.out.ipv6 1>/dev/null 316d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun diff -iwB $LTPTMP/tst_xinetd.out.ipv6 $LTPTMP/tst_xinetd.exp.1.ipv6 \ 317a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err.ipv6 2>&1 318a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 319d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 320d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 321d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \ 322d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 323d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun return $RC 324d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 325d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 326d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 327d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun echo "" | $TELNET_COMM 127.0.0.1 2>$LTPTMP/tst_xinetd.out 1>/dev/null 3283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun diff -iwB $LTPTMP/tst_xinetd.out $LTPTMP/tst_xinetd.exp.1 \ 329a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 330a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 331fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 332fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 333fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.err \ 334fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 335fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 336fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 337fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 338fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: restart xinetd with telnet enabled." 3393db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # install the xinetd config file with telnet enabled. 340a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv $LTPTMP/tst_xinetd.conf.2 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1 341a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 342fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 343fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 344fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 345fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed installing new xinetd.conf in /etc. Details:" 346fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 347fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 348fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 349fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: new xinetd.conf installed with telnet enabled." 35037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman 3513db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 352fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 3533db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restart services. 354a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu /etc/init.d/xinetd restart > $LTPTMP/tst_xinetd.out 2>&1 355a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 356fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 357fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 358fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.out \ 359fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: unable to restart services with telnet enabled. Details:" 360fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 3613db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3623db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # even if restart has a zero exit value double check for failure. 363a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1 364a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 3653db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -eq 0 ] 3663db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 3673db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err \ 3683db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd failed to restart. Details" 3693db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun return $RC 3703db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3713db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun RC=0 3723db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TINFO \ 3733db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd re-started successfully with telnet enabled." 3743db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3753db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3763db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 3773db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Not checking for exit code from telnet command because telnet is 3783db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # not terminated by the test gracefully. 379d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 380d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 381d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun echo "" | $TELNET_COMM ::1 >$LTPTMP/tst_xinetd.out.ipv6 2>&1 382d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun diff -iwB $LTPTMP/tst_xinetd.out.ipv6 $LTPTMP/tst_xinetd.exp.2.ipv6 \ 383a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err.ipv6 2>&1 384a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 385d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 386d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 387d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \ 388d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 389d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun return $RC 390d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun else 391d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_resm TPASS \ 392d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: xinetd reads the config file and starts or stops IPv6 services." 393d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 394d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 395d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 396d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun echo "" | $TELNET_COMM 127.0.0.1 > $LTPTMP/tst_xinetd.out 2>&1 3973db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 3983db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun diff -iwB $LTPTMP/tst_xinetd.out $LTPTMP/tst_xinetd.exp.2 \ 399a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 400a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 401fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 402fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 403fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.err \ 404fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: expected output differes from actual. Details:" 405fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 4063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 4073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TPASS \ 4083db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd reads the config file and starts or stops services." 409fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 410fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 41137550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman return $RC 412fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 413fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 414fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 415fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: main 416fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 417fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Execute all tests and report results. 418fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 41937550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Exit: - zero on success 420fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 421fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 422fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojinit || exit $? 423fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 424fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01 || RC=$? 425fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 426fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojexit $RC 427