Home | History | Annotate | Line # | Download | only in newbtconf
newbtconf.sh revision 1.8.96.1
      1       1.1   darrenr #!/bin/sh
      2       1.1   darrenr #
      3       1.1   darrenr # Setup a new config directory
      4       1.1   darrenr #
      5       1.1   darrenr if [ $# -lt 1 ] ; then
      6       1.8      jmmv 	echo "usage: $0 <newconfig> [<baseconfig>]"
      7       1.8      jmmv 	echo "usage: $0 init"
      8       1.8      jmmv 	echo "usage: $0 revert"
      9       1.1   darrenr 	exit 1;
     10       1.1   darrenr fi
     11       1.1   darrenr dir=$1
     12       1.1   darrenr 
     13       1.3     lukem FILES="defaultdomain fstab ifconfig.* inetd.conf mrouted.conf \
     14       1.4     lukem 	mygate myname netstart nsswitch.conf ntp.conf \
     15       1.3     lukem 	rc.conf rc.conf.d resolv.conf"
     16       1.3     lukem 
     17       1.1   darrenr if [ $dir = init ] ; then
     18  1.8.96.1  pgoyette 	if [ -d /etc/etc.network ] || [ -e /etc/etc.current ] ; then
     19       1.1   darrenr 		echo "Error: multi-configuration already initialized"
     20       1.1   darrenr 		exit 1
     21       1.1   darrenr 	fi
     22       1.1   darrenr 	dir=etc.network
     23       1.1   darrenr 	cd /etc
     24       1.1   darrenr 	mkdir -m 755 $dir
     25       1.1   darrenr 	ln -s $dir etc.current
     26       1.1   darrenr 	ln -s $dir etc.default
     27       1.3     lukem 	for i in ${FILES}; do
     28  1.8.96.1  pgoyette 		if [ -f $i ] || [ -d $i ] ; then
     29       1.1   darrenr 			mv $i $dir
     30       1.1   darrenr 			ln -s etc.current/$i .
     31       1.1   darrenr 		fi
     32       1.1   darrenr 	done
     33       1.1   darrenr 	echo "/etc/$dir has now been created and populated."
     34       1.7       seb 	exit 0
     35       1.7       seb fi
     36       1.7       seb 
     37       1.7       seb if [ $dir = revert ] ; then
     38       1.7       seb 	if [ !  -d /etc/etc.current ] ; then
     39       1.7       seb 		echo "Error: multi-configuration not initialized"
     40       1.7       seb 		exit 1
     41       1.7       seb 	fi
     42       1.7       seb 	cd /etc
     43       1.7       seb 	for i in ${FILES}; do
     44  1.8.96.1  pgoyette 		if [ -f $i ] || [ -d $i ] ; then
     45       1.7       seb 			stat="`ls -ld $i`"
     46       1.7       seb 			case x"$stat" in
     47       1.7       seb 				xl*) :;;
     48       1.7       seb 				x*)
     49       1.7       seb 				echo "$i: not a symlink, skipping"
     50       1.7       seb 				continue ;;	
     51       1.7       seb 			esac
     52       1.7       seb 			linkto="${stat##*-> }"
     53       1.7       seb 			case x"$linkto" in
     54       1.7       seb 				xetc.current/*) :;;
     55       1.7       seb 				x*)
     56       1.7       seb 				echo "$i: does not symlink to etc.current, skipping"
     57       1.7       seb 				continue ;;
     58       1.7       seb 			esac
     59       1.7       seb 			if [ -f $i ] ; then
     60       1.7       seb 				rm $i
     61       1.7       seb 				cp -p $linkto $i
     62       1.7       seb 			else
     63       1.7       seb 				rm $i
     64       1.7       seb 				( cd etc.current && pax -rw -pe $i /etc )
     65       1.7       seb 			fi
     66       1.7       seb 		fi
     67       1.7       seb 	done
     68       1.7       seb 	rm etc.current
     69       1.7       seb 	rm etc.default
     70       1.1   darrenr 	exit 0
     71       1.1   darrenr fi
     72       1.1   darrenr 
     73       1.1   darrenr if [ "`expr $dir : 'etc\.\(.*\)'`" != $dir ] ; then
     74       1.1   darrenr 	dir=etc.$dir
     75       1.1   darrenr fi
     76       1.1   darrenr if [ -e /etc/$dir ] ; then
     77       1.1   darrenr 	echo "Error: $dir already exists"
     78       1.1   darrenr 	exit 1;
     79       1.1   darrenr fi
     80       1.1   darrenr newname=`expr $dir : 'etc.\(.*\)'`
     81       1.1   darrenr if [ $# -lt 2 ] ; then
     82       1.1   darrenr 	orig=etc.current
     83       1.1   darrenr 	echo "Using current config as base for $newname"
     84       1.1   darrenr else
     85       1.1   darrenr 	orig=$2
     86       1.1   darrenr fi
     87       1.1   darrenr 
     88       1.1   darrenr if [ -z "`expr $orig : 'etc.\(.*\)'`" ] ; then
     89       1.1   darrenr 	orig=etc.$orig
     90       1.1   darrenr fi
     91       1.1   darrenr 
     92       1.2   darrenr if [ ! -d /etc/$orig ] ; then
     93       1.2   darrenr 	echo "Original directory /etc/$orig does not exist."
     94       1.2   darrenr 	exit 1;
     95       1.2   darrenr fi
     96       1.1   darrenr mkdir -m 755 /etc/$dir
     97       1.6       seb cd /etc/$orig 
     98       1.6       seb pax -rw -pe . /etc/$dir
     99       1.1   darrenr echo "/etc/$dir has now been created and populated."
    100       1.1   darrenr exit 0
    101