#!/sbin/sh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" # # zoneunshare -- unshare zone resources # Processes the specified sharetab file and unshare # all entries shared by the specfied zone setvar USAGE = ""zoneunshare -z zonename [- | file]"" set -- $(getopt z: $ifsjoin(ARGV)) if test $Status != 0 # invalid options { echo $USAGE >&2 exit 1 } for i in [$ifsjoin(ARGV)] # pick up the options { match $i { with -z setvar zonename = "$2"; shift 2 with -- shift; break } } setvar zoneattr = $(/usr/sbin/zoneadm -z $zonename list -p ) if test $Status -ne 0 # invalid zone { echo $USAGE >&2 exit 1 } setvar prefix = $(echo $zoneattr | cut -d ":" -f4) setvar rootpath = "$prefix/root" if test $Argc -gt 1 # accept only one argument { echo $USAGE >&2 exit 1 } elif test $Argc = 1 { match $1 { with - setvar infile = '' # use stdin with * setvar infile = "$1" # use a given source file } } else { setvar infile = '/etc/dfs/sharetab' # default } # Run unshare for each resource in its own shell while read line # get complete lines { echo $line } < $infile | $(egrep "^$rootpath"|nawk '{ print "/usr/sbin/unshare " $1 ";" }'|/sbin/sh)