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 667ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu . daemonlib.sh 67fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 6854305b281dbcad520eae016d13e85d5142574611Alexey Kodanev if [ -f "/usr/lib/systemd/system/telnet.socket" ]; then 6954305b281dbcad520eae016d13e85d5142574611Alexey Kodanev tst_brkm TCONF NULL "xinetd doesn't manage telnet" 7054305b281dbcad520eae016d13e85d5142574611Alexey Kodanev exit $? 7154305b281dbcad520eae016d13e85d5142574611Alexey Kodanev fi 7254305b281dbcad520eae016d13e85d5142574611Alexey Kodanev 73fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Inititalize cleanup function. 74fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj trap "cleanup" 0 75fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 76fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # create the temporary directory used by this testcase 77fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ -z $TMP ] 78fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 79fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj LTPTMP=/tmp/tst_xinetd.$$ 80fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj else 81fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj LTPTMP=$TMP/tst_xinetd.$$ 82fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 83fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 84a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mkdir -p $LTPTMP > /dev/null 2>&1 85a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 86fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 87fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 88fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL "INIT: Unable to create temporary directory" 89fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 90fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 91fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 92d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun # sometimes the default telnet may be /usr/kerberos/bin/telnet 93d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun TELNET_COMM='/usr/bin/telnet' 94d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 95fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # check if commands tst_*, xinetd, awk exists. 96fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT tst_resm || return $RC 97fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT xinetd || return $RC 98fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj chk_ifexists INIT diff || return $RC 99d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun chk_ifexists INIT ip || return $RC 100d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun chk_ifexists INIT $TELNET_COMM || return $RC 101d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 102d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun IPV6_ENABLED=0 103d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun ip a | grep inet6 > /dev/null 2>&1 104d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $? -eq 0 ] 105d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 106d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun IPV6_ENABLED=1 107d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 108fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 1093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Create custom xinetd.conf file. 1103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # tst_xinetd.conf.1 config file has telnet service disabled. 111a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.conf.1 <<-EOF 1123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults 1133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1143db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun instances = 25 1153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_type = FILE /var/log/servicelog 1163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_success = HOST PID 117a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu log_on_failure = HOST 1183db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun disabled = telnet 1193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1203db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 121a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 1223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 1233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # tst_xinetd.conf.2 config file has telnet enabled. 124a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.conf.2 <<-EOF 1253db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyundefaults 1263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun instances = 25 1283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_type = FILE /var/log/servicelog 1293db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_success = HOST PID 1303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun log_on_failure = HOST 1313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # disabled = telnet 1323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 1343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyunservice telnet 1353db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun{ 1363db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun socket_type = stream 1373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun protocol = tcp 1383db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun wait = no 1393db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun user = root 1403db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun server = /usr/sbin/in.telnetd 1413db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun server_args = -n 1423db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun no_access = 14373469b59c5f779cdfb9ecd9f2fb5e2cb262f0341Simon Xu flags = IPv6 1443db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun} 1453db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 146a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 147fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 148fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Create expected file with telnet disabled. 149a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.1 <<-EOF 150d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address 127.0.0.1: Connection refused 1513db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 152a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 153fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 154fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 155fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 156fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL \ 157fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1" 158fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 159fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 160fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 161d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 162d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 163a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.1.ipv6 <<-EOF 164d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyuntelnet: connect to address ::1: Connection refused 165d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF 166a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 167d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 168d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 169d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 170d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_brkm TBROK NULL \ 171d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.1" 172d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 173d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 174d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 175fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # Create expected file with telnet enabled. 176a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.2 <<-EOF 1773db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunTrying 127.0.0.1... 178d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to 127.0.0.1. 1793db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEscape character is '^]'. 1803db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunConnection closed by foreign host. 1813db8657b93cd11e428067e89cddd0bfb36b2b440Xie LingyunEOF 182a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 183fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 184fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 185fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 186fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brkm TBROK NULL \ 187d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2" 188fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 189fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 190fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 191d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 192d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 193a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu cat > $LTPTMP/tst_xinetd.exp.2.ipv6 <<-EOF 194d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunTrying ::1... 195d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnected to ::1. 196d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEscape character is '^]'. 197d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunConnection closed by foreign host. 198d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie LingyunEOF 199a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon XuRC=$? 200d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 201d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 202d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 203d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_brkm TBROK NULL \ 204d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "INIT: unable to create expected file $LTPTMP/tst_xinetd.exp.2.ipv6" 205d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 206d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 207d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 208fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 209fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 210fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 211fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 212fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: cleanup 213fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 21437550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Description: - remove temporaty files and directories. 215fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 216fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 217fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 218fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojcleanup() 219fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 2203db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restore the original xinetd.conf if a back up exits. 2213db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ -f /etc/xinetd.conf.orig ] 2223db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2233db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun mv /etc/xinetd.conf.orig /etc/xinetd.conf \ 224a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 225a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 2263db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -ne 0 ] 2273db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2283db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TINFO $LTPTMP/tst_xinetd.err \ 2293db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "CLEANUP: failed restoring original xinetd.conf RC=$RC. Details:" 2303db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 2313db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 2323db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 2333db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 2343db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restoring original services 2357ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu restart_daemon xinetd > $LTPTMP/tst_xinetd.err 2>&1 236a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 2373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -ne 0 ] 2383db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 2393db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TINFO $LTPTMP/tst_xinetd.err \ 2403db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "CLEANUP: failed restoring original services RC=$RC. Details:" 2413db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 2423db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 243fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 244fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj # remove all the temporary files created by this test. 245fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "CLEAN: removing $LTPTMP" 246fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj rm -fr $LTPTMP 247fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 248fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 249fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 250fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: test01 251fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 252fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Test that xinetd reads the configuration file and starts or 253fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# stops services. 254fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - restart xinetd with configuration file with telnet disabled. 255fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - telnet to locahost should fail. 256fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - restart xinetd with configuration file with telnet enabled. 257fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - telnet to locahost should work. 25837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# 259fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Return: - zero on success. 260fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 261fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01() 262fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj{ 263fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj TCID=xinetd01 264fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj TST_COUNT=1 265fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj nhops=0 # Number of hops required to get to host. 266fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 267fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: restart xinetd with telnet disabled." 26837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman 2693db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # create a backup of the original xinetd.conf file. 270a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv /etc/xinetd.conf /etc/xinetd.conf.orig > $LTPTMP/tst_xinetd.err 2>&1 271a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 272fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 273fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 274fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 275fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed while backing up original xinetd.conf. Details" 276fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 277fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 278fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2793db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # install the new config file with telnet disabled. 280a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv $LTPTMP/tst_xinetd.conf.1 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1 281a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 282fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 283fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 284fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 285fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed installing new xinetd.conf in /etc. Details:" 286fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 287fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 288fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 289fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: new xinetd.conf installed with telnet disabled." 290fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2913db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 292fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 2933db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restart xinetd to re-start the services 2947ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu restart_daemon xinetd > $LTPTMP/tst_xinetd.out 2>&1 295a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 296fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 297fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 298fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.out \ 299fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: unable to restart service with telnet disabled. Details:" 300fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 3013db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3023db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # even if xinetd restart has zero exit value, 3033db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # make certain there was no failure. 304a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1 305a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 3063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -eq 0 ] 3073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 3083db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err \ 3093db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd failed to restart. Details" 3103db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun return $RC 3113db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3123db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun RC=0 3133db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TINFO \ 3143db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd re-started successfully with telnet disabled." 3153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3173db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 3183db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Not checking for exit code from telnet command because telnet is 3193db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # not terminated by the test gracefully. 320d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 321d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 322491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu tst_retry "echo '' | $TELNET_COMM ::1 2>$LTPTMP/tst_xinetd.out.ipv6 \ 323491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu 1>/dev/null" 324d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun diff -iwB $LTPTMP/tst_xinetd.out.ipv6 $LTPTMP/tst_xinetd.exp.1.ipv6 \ 325a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err.ipv6 2>&1 326a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 327d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 328d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 329d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \ 330d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 331d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun return $RC 332d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 333d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 334d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 335491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu tst_retry "echo "" | $TELNET_COMM 127.0.0.1 2>$LTPTMP/tst_xinetd.out \ 336491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu 1>/dev/null" 3373db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun diff -iwB $LTPTMP/tst_xinetd.out $LTPTMP/tst_xinetd.exp.1 \ 338a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 339a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 340fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 341fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 342fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.err \ 343fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 344fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 345fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 346fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 347fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: restart xinetd with telnet enabled." 3483db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # install the xinetd config file with telnet enabled. 349a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu mv $LTPTMP/tst_xinetd.conf.2 /etc/xinetd.conf > $LTPTMP/tst_xinetd.err 2>&1 350a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 351fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 352fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 353fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_brk TBROK $LTPTMP/tst_xinetd.err NULL \ 354fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: Failed installing new xinetd.conf in /etc. Details:" 355fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 356fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 357fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 358fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_resm TINFO "Test #1: new xinetd.conf installed with telnet enabled." 35937550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman 3603db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun sleep 1s 361fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 3623db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # restart services. 3637ab4782fde2f506dc688dcd261cd4f600cd38993Simon Xu restart_daemon xinetd > $LTPTMP/tst_xinetd.out 2>&1 364a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 365fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 366fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 367fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.out \ 368fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: unable to restart services with telnet enabled. Details:" 369fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 3703db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3713db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # even if restart has a zero exit value double check for failure. 372a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu grep -i "fail" $LTPTMP/tst_xinetd.out > $LTPTMP/tst_xinetd.err 2>&1 373a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 3743db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun if [ $RC -eq 0 ] 3753db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun then 3763db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err \ 3773db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd failed to restart. Details" 3783db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun return $RC 3793db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 3803db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun RC=0 3813db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TINFO \ 3823db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd re-started successfully with telnet enabled." 3833db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3843db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun fi 3853db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 3863db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # Not checking for exit code from telnet command because telnet is 3873db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun # not terminated by the test gracefully. 388d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $IPV6_ENABLED -eq 1 ] 389d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 390491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu tst_retry "echo '' | $TELNET_COMM ::1 2>$LTPTMP/tst_xinetd.out.ipv6 2>&1" 391d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun diff -iwB $LTPTMP/tst_xinetd.out.ipv6 $LTPTMP/tst_xinetd.exp.2.ipv6 \ 392a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err.ipv6 2>&1 393a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 394d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun if [ $RC -ne 0 ] 395d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun then 396d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_res TFAIL $LTPTMP/tst_xinetd.err.ipv6 \ 397d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: with telnet diabled expected out differs RC=$RC. Details:" 398d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun return $RC 399d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun else 400d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun tst_resm TPASS \ 401d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun "Test #1: xinetd reads the config file and starts or stops IPv6 services." 402d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 403d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun fi 404d0a43a07e4e0fdfe06c5aad6b3266379c112aefdXie Lingyun 405491654ffaad91ac16efa1aa0cd936a2fb6057c77Hangbin Liu test_retry "echo '' | $TELNET_COMM 127.0.0.1 2>$LTPTMP/tst_xinetd.out 2>&1" 4063db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun 4073db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun diff -iwB $LTPTMP/tst_xinetd.out $LTPTMP/tst_xinetd.exp.2 \ 408a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu > $LTPTMP/tst_xinetd.err 2>&1 409a4f5e23bb7dbbe71a52bc89b43edea35e2567382Simon Xu RC=$? 410fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj if [ $RC -ne 0 ] 411fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj then 412fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj tst_res TFAIL $LTPTMP/tst_xinetd.err \ 413fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj "Test #1: expected output differes from actual. Details:" 414fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj return $RC 4153db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun else 4163db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun tst_resm TPASS \ 4173db8657b93cd11e428067e89cddd0bfb36b2b440Xie Lingyun "Test #1: xinetd reads the config file and starts or stops services." 418fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj fi 419fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 42037550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman return $RC 421fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj} 422fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 423fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 424fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Function: main 425fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 426fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# Description: - Execute all tests and report results. 427fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# 42837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman# Exit: - zero on success 429fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj# - non-zero on failure. 430fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 431fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojinit || exit $? 432fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 433fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojtest01 || RC=$? 434fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanoj 435fb8c7b331732cfc0eb37a480c07e7d06bcb68763iyermanojexit $RC 436