#!/bin/bash #### VARIABILI SCRIPTNAME=`echo $0 | awk -vFS='/' '{print $NF}'` EXEC=/hosthome${PWD#$HOME}${0#'.'} waitfinish() { SEMAPHORE=$1.boot touch $SEMAPHORE while [ -f $SEMAPHORE ]; do sleep 2 done sleep 2 } notifyfinish() { rm $1.boot } r_20_1=r_20_1-as20r1 r_20_2=r_20_2-as20r2 r_100_1=r_100_1-as100r1 if ! [ `uname -r|tail -c 3` = "um" ]; then # only realhost takes arguments case "$1" in start) ############## CREATE THE HOSTS FROM SCRATCH if [ -e $r_20_1.disk ] || [ -e $r_20_2.disk ] || [ -e $r_100_1.disk ] ; then echo "$0: some .disk file exists in this directory!" echo " launch "$0 clean" first" exit 1 fi vstart $r_20_1 --eth0=C --eth1=F --new --exec=$EXEC waitfinish $r_20_1 vstart $r_20_2 --eth1=C --eth0=E --new --exec=$EXEC waitfinish $r_20_2 vstart $r_100_1 --eth0=E --eth1=F --eth2=J --new --exec=$EXEC waitfinish $r_100_1 ;; restart) ############## CREATE THE HOSTS FROM SCRATCH if [ -e $r_20_1.disk ] || [ -e $r_20_2.disk ] || [ -e $r_100_1.disk ] ; then echo "$0: some .disk file does not exist!" echo " launch "$0 start" instead" exit 1 fi vstart $r_20_1 --eth0=C --eth1=F --exec=$EXEC waitfinish $r_20_1 vstart $r_20_2 --eth1=C --eth0=E --exec=$EXEC waitfinish $r_20_2 vstart $r_100_1 --eth0=E --eth1=F --eth2=J --exec=$EXEC waitfinish $r_100_1 ;; halt) vhalt $r_20_1 & vhalt $r_20_2 & vhalt $r_100_1 & ;; crash) vcrash $r_20_1 & vcrash $r_20_2 & vcrash $r_100_1 & ;; clean) rm -f $r_20_1.disk rm -f $r_20_2.disk rm -f $r_100_1.disk ;; *) echo "Usage:$0 {start | halt | restart | crash | clean}" exit 1 ;; esac else # not realhost (virtual host to configure, does not take arguments) SCRIPTFILE=`cat /proc/cmdline | awk -v FS== -v RS=' ' '{if($1=="exec") print $2}' ` SCRIPTDIR=${SCRIPTFILE%/${SCRIPTNAME}} cd $SCRIPTDIR if [ $HOSTNAME = $r_20_1 ]; then /sbin/ifconfig eth0 20.1.1.1 netmask 255.255.255.0 up /sbin/ifconfig eth1 11.0.0.6 netmask 255.255.255.252 up ## NORIP ## OKBGP cat > /etc/zebra/bgpd.conf < /etc/zebra/daemons < /etc/zebra/bgpd.conf < /etc/zebra/daemons < /etc/zebra/bgpd.conf < /etc/zebra/daemons <