Home | History | Annotate | Download | only in rpcinfo
      1 #!/bin/sh
      2 # Copyright (c) 2017 Oracle and/or its affiliates. All Rights Reserved.
      3 # Copyright (c) International Business Machines  Corp., 2000
      4 #
      5 # This program is free software; you can redistribute it and/or
      6 # modify it under the terms of the GNU General Public License as
      7 # published by the Free Software Foundation; either version 2 of
      8 # the License, or (at your option) any later version.
      9 #
     10 # This program is distributed in the hope that it would be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # 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, see <http://www.gnu.org/licenses/>.
     17 
     18 TCID="rpcinfo01"
     19 TST_TOTAL=16
     20 TST_CLEANUP=tst_rmdir
     21 
     22 TST_USE_LEGACY_API=1
     23 . tst_net.sh
     24 
     25 do_setup()
     26 {
     27 	tst_resm TINFO "Checking for portmap or rpcbind"
     28 
     29 	if pgrep portmap > /dev/null; then
     30 		PORTMAPPER="portmap"
     31 	else
     32 		pgrep rpcbind > /dev/null && PORTMAPPER="rpcbind" || \
     33 			tst_brkm TCONF "portmap or rpcbind is not running"
     34 	fi
     35 
     36 	tst_tmpdir
     37 
     38 	# Create file with 1 tcp and 1 udp line. Use for variable assignments.
     39 	rpcinfo -p $(tst_ipaddr) | grep tcp | sed -n 2p > rpc_out
     40 	rpcinfo -p $(tst_ipaddr) | grep udp | sed -n 2p >> rpc_out
     41 
     42 	wc -l rpc_out | grep "2" > /dev/null || \
     43 		tst_brkm TBROK "Not enough programs registered on $(tst_ipaddr)"
     44 
     45 	# Using "rpc_out" file created above, assign variables for rpcinfo opts
     46 	TPNUM=`grep tcp rpc_out | awk '{print $1}'`
     47 	TVNUM=`grep tcp rpc_out | awk '{print $2}'`
     48 	TCPNAME=`grep tcp rpc_out | awk '{print $5}'`
     49 	UPNUM=`grep udp rpc_out | awk '{print $1}'`
     50 	UVNUM=`grep udp rpc_out | awk '{print $2}'`
     51 	UDPNAME=`grep udp rpc_out | awk '{print $5}'`
     52 }
     53 
     54 do_test()
     55 {
     56 	local thost="$(tst_ipaddr)"
     57 
     58 	EXPECT_RHOST_PASS rpcinfo -p $thost | grep -q portmapper
     59 	EXPECT_RHOST_PASS rpcinfo -t $thost $TPNUM
     60 	EXPECT_RHOST_PASS rpcinfo -t $thost $TPNUM $TVNUM
     61 	EXPECT_RHOST_PASS rpcinfo -t $thost $TCPNAME
     62 	EXPECT_RHOST_PASS rpcinfo -t $thost $TCPNAME $TVNUM
     63 	EXPECT_RHOST_PASS rpcinfo -u $thost 100000
     64 	EXPECT_RHOST_PASS rpcinfo -u $thost 100000 2
     65 	EXPECT_RHOST_PASS rpcinfo -u $thost portmapper
     66 	EXPECT_RHOST_PASS rpcinfo -u $thost portmapper 2
     67 
     68 	tst_resm TINFO "Test rpcinfo with missing or bad options"
     69 	EXPECT_RHOST_FAIL rpcinfo -p bogushost
     70 	EXPECT_RHOST_FAIL rpcinfo -bogusflag
     71 	EXPECT_RHOST_FAIL rpcinfo -t $thost
     72 	EXPECT_RHOST_FAIL rpcinfo -u $thost
     73 	EXPECT_RHOST_FAIL rpcinfo -u $thost bogusprog
     74 	EXPECT_RHOST_FAIL rpcinfo -u $thost 11579
     75 	EXPECT_RHOST_FAIL rpcinfo -u $thost 100000 5
     76 }
     77 
     78 do_setup
     79 do_test
     80 
     81 tst_exit
     82