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 # zoneunshare -- unshare zone resources 26 27 # Processes the specified sharetab file and unshare 28 # all entries shared by the specfied zone 29 30 USAGE="zoneunshare -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=/etc/dfs/sharetab # default 67 fi 68 69 # Run unshare for each resource in its own shell 70 71 while read line # get complete lines 72 do 73 echo $line 74 done < $infile | 75 `egrep "^$rootpath"|/usr/xpg4/bin/awk '{ print "/usr/sbin/unshare " $1 ";" }'|/sbin/sh`