1 #!/sbin/sh 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License (the "License"). 7 # You may not use this file except in compliance with the License. 8 # 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 # or http://www.opensolaris.org/os/licensing. 11 # See the License for the specific language governing permissions 12 # and limitations under the License. 13 # 14 # When distributing Covered Code, include this CDDL HEADER in each 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 # If applicable, add the following below this CDDL HEADER, with the 17 # fields enclosed by brackets "[]" replaced with your own identifying 18 # information: Portions Copyright [yyyy] [name of copyright owner] 19 # 20 # CDDL HEADER END 21 # 22 # Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23 # Use is subject to license terms. 24 # 25 # zoneshare -- share zone resources 26 27 # Processes a non-global zone's dfstab file after translating 28 # its zone-relative pathnames to global zone pathnames 29 30 USAGE="zoneshare -z zonename [- | file]" 31 set -- `getopt z: $*` 32 if [ $? != 0 ] # invalid options 33 then 34 echo $USAGE >&2 35 exit 1 36 fi 37 for i in $* # pick up the options 38 do 39 case $i in 40 -z) zonename=$2; shift 2;; 41 --) shift; break;; 42 esac 43 done 44 45 zoneattr=`/usr/sbin/zoneadm -z $zonename list -p 2> /dev/null` 46 if [ $? -ne 0 ] # invalid zone 47 then 48 echo $USAGE >&2 49 exit 1 50 fi 51 52 prefix=`echo $zoneattr | cut -d ":" -f4` 53 rootpath=$prefix/root 54 55 if [ $# -gt 1 ] # accept only one argument 56 then 57 echo $USAGE >&2 58 exit 1 59 elif [ $# = 1 ] 60 then 61 case $1 in 62 -) infile=;; # use stdin 63 *) infile=$1;; # use a given source file 64 esac 65 else 66 infile=$prefix/etc/dfs/dfstab # default 67 fi 68 69 # Prepend each exported pathname with the zone's rootpath 70 # Skip over comments and lines without a share command 71 # Run each share command in its own shell 72 73 while read line # get complete lines 74 do 75 echo $line 76 done < $infile | 77 `egrep -v "(^[#])" | /usr/xpg4/bin/awk -v rootpath=$rootpath \ 78 '/share/ { ORS = " "; for (i = 1; i < NF; i++) print $i ; \ 79 print rootpath $NF ";" } ' | /sbin/sh`