X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fstart-vservers;h=f02d3a3ded78b10e6ba56eb5a29d262668f1e418;hb=refs%2Fheads%2Fscholz;hp=f35bf1337251a193ac463bad4b2a1251d2d841f8;hpb=8cf13bb177d92c93eb73dc8939777150536c2d00;p=util-vserver.git diff --git a/scripts/start-vservers b/scripts/start-vservers index f35bf13..f02d3a3 100755 --- a/scripts/start-vservers +++ b/scripts/start-vservers @@ -52,7 +52,27 @@ the GNU General Public License. This program has absolutely no warranty." function verifyVserver() { - true + local xtra="${2:+ mentioned in '$2'}" + case x$1 in + (x\#*|x) + return 1;; # skip empty and comment lines + ($__CONFDIR/*) + warning "This version of 'start-vservers' supports only short vserver names; try to remove the '$__CONFDIR' from '$1'$xtra" + return 1 + ;; + (/*) + warning "This version of 'start-vservers' supports only short vserver names; '$1'$xtra is not possible" + return 1 + ;; + (*) + $_VSERVER_INFO -q "$__CONFDIR/$1" VDIR || { + warning "Vserver '$1'$xtra does not exist; skipping it..." + return 1; + } + ;; + esac + + return 0 } ### @@ -68,6 +88,7 @@ eval set -- "$tmp" declare -a tmp_vservers=() declare -r TAB=$(echo -en "\t") OPTION_MARK= +OPTION_MARK_ANY=1 OPTION_PARALLEL=99 OPTION_DEBUG= NOOPTION_DEBUG=1 @@ -84,7 +105,7 @@ while true; do (--help) showHelp $0 ;; (--version) showVersion $0 ;; (-c) CONFDIR=$2; shift;; - (-m) OPTION_MARK=$2; shift;; + (-m) OPTION_MARK=$2; OPTION_MARK_ANY=; shift;; (-j) OPTION_PARALLEL=$2; shift;; (--start) OPTION_FLAVOR=start;; (--stop) OPTION_FLAVOR=stop;; @@ -109,15 +130,16 @@ while test $i -gt 0; do let --i d=$__CONFDIR/${vservers[$i]}/apps/init f=$d/mark + { test -n "$OPTION_MARK_ANY"; } || \ { test -n "$OPTION_MARK" -a -r "$f" && grep -qx "$OPTION_MARK" "$f"; } || \ { test -z "$OPTION_MARK" && test ! -e "$f"; } || \ unset vservers[$i] done -makedir=$($_MKTEMPDIR /tmp/vserver-init.XXXXXX) -okfile=$($_MKTEMP /tmp/vserver-init.XXXXXX) -passedfile=$($_MKTEMP /tmp/vserver-init.XXXXXX) -trap "$_RM -rf $makedir $resultfile $passedfile" EXIT +makedir=$($_MKTEMPDIR vserver-init.XXXXXX) +okfile=$($_MKTEMP vserver-init.XXXXXX) +passedfile=$($_MKTEMP vserver-init.XXXXXX) +trap "$_RM -rf $makedir $okfile $passedfile" EXIT test_cmd=false case "$OPTION_FLAVOR" in @@ -137,6 +159,8 @@ EOF echo -ne "all:\t" for i in "${vservers[@]}"; do + verifyVserver "$i" || continue + echo -n ".$i.stamp " done echo @@ -148,24 +172,25 @@ for i in "${vservers[@]}"; do test -e "$d"/depends || continue cat "$d"/depends done | sort -u | while read vserver; do + verifyVserver "$vserver" || continue d="$__CONFDIR/$vserver"/apps/init case "$OPTION_FLAVOR" in - start) + (start) if test -e "$d"/depends; then echo -ne ".$vserver.stamp:\t" cat "$d"/depends | while read dep; do - verifyVserver "$dep" + verifyVserver "$dep" "$d"/depends || continue echo -n ".$dep.stamp " done echo fi >>$makedir/Makefile ;; - stop) + (stop) if test -e "$d"/depends; then cat "$d"/depends | while read dep; do - verifyVserver "$dep" - echo -ne ".$dep.stamp:\t.$vserver.stamp" + verifyVserver "$dep" "$d"/depends || continue + echo -e ".$dep.stamp:\t.$vserver.stamp" done echo fi >>$makedir/Makefile