mirror of
				https://github.com/strongswan/strongswan.git
				synced 2025-11-04 00:00:51 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# starts the UML instances in a konsole (requires KDE)
 | 
						|
#
 | 
						|
# Copyright (C) 2004  Eric Marchionni, Patrik Rayo
 | 
						|
# Zuercher Hochschule Winterthur
 | 
						|
#
 | 
						|
# This program is free software; you can redistribute it and/or modify it
 | 
						|
# under the terms of the GNU General Public License as published by the
 | 
						|
# Free Software Foundation; either version 2 of the License, or (at your
 | 
						|
# option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
 | 
						|
#
 | 
						|
# This program is distributed in the hope that it will be useful, but
 | 
						|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 | 
						|
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
						|
# for more details.
 | 
						|
 | 
						|
DIR=`dirname $0`
 | 
						|
 | 
						|
source $DIR/function.sh
 | 
						|
 | 
						|
[ -f $DIR/../testing.conf ] || die "Configuration file 'testing.conf' not found"
 | 
						|
 | 
						|
source $DIR/../testing.conf
 | 
						|
 | 
						|
if [ "$#" -eq 0 ]
 | 
						|
then
 | 
						|
    HOSTS=$STRONGSWANHOSTS
 | 
						|
else
 | 
						|
    HOSTS=$*
 | 
						|
fi
 | 
						|
 | 
						|
BOOTING_HOSTS=""
 | 
						|
count_max=12
 | 
						|
count=0
 | 
						|
 | 
						|
#position of konsole window on the desktop
 | 
						|
x0=8
 | 
						|
y0=8
 | 
						|
dx=12
 | 
						|
dy=24
 | 
						|
 | 
						|
for host in $HOSTS
 | 
						|
do
 | 
						|
    up=0
 | 
						|
 | 
						|
    if [ -d ~/.uml/${host} ]
 | 
						|
    then
 | 
						|
	pid=`cat ~/.uml/${host}/pid`
 | 
						|
	up=`ps up $pid | wc -l`
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ $up -eq 2 ]
 | 
						|
    then
 | 
						|
	cecho " * Great, ${host} is already running!"
 | 
						|
    else
 | 
						|
	rm -rf ~/.uml/${host}
 | 
						|
	BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
 | 
						|
	let "count_max += 12"
 | 
						|
 | 
						|
	UMLHOSTFS=$BUILDDIR/root-fs/gentoo-fs-${host}
 | 
						|
	[ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"
 | 
						|
 | 
						|
	cecho-n " * Starting ${host}.."
 | 
						|
	eval konsole -title ${host} --geometry "+${x0}+${y0}" -e "$UMLKERNEL \
 | 
						|
	    umid=${host} \
 | 
						|
	    ubda=$UMLHOSTFS \
 | 
						|
	    \$SWITCH_${host} \
 | 
						|
	    mem=${MEM}M con=pty con0=fd:0,fd:1" &
 | 
						|
        cgecho "done"
 | 
						|
        sleep 15
 | 
						|
    fi
 | 
						|
    let "x0+=dx"
 | 
						|
    let "y0+=dy"
 | 
						|
done
 | 
						|
 | 
						|
if [ -z "$BOOTING_HOSTS" ]
 | 
						|
then
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
cecho " * Waiting for the uml instances to finish booting"
 | 
						|
 | 
						|
for host in $BOOTING_HOSTS
 | 
						|
do
 | 
						|
    cecho-n " * Checking on $host.."
 | 
						|
 | 
						|
    while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
 | 
						|
    do
 | 
						|
	cecho-n "."
 | 
						|
	sleep 5
 | 
						|
	let "count+=1"
 | 
						|
    done
 | 
						|
 | 
						|
    if [ $count -ge $count_max ]
 | 
						|
    then
 | 
						|
	cecho "exit"
 | 
						|
	exit 1
 | 
						|
    fi
 | 
						|
 | 
						|
    up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
 | 
						|
 | 
						|
    while [ $count -lt $count_max ] && [ $up -eq 0 ]
 | 
						|
    do
 | 
						|
	cecho-n "."
 | 
						|
	sleep 5
 | 
						|
	up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
 | 
						|
	let "count+=1"
 | 
						|
    done
 | 
						|
 | 
						|
    if [ $count -ge $count_max ]
 | 
						|
    then
 | 
						|
	cecho "exit"
 | 
						|
	exit 1
 | 
						|
    else
 | 
						|
	cgecho "up"
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ "$host" = "alice" ]
 | 
						|
    then
 | 
						|
	sleep 5
 | 
						|
	eval ipv4_${host}="`echo $HOSTNAMEIPV4 | sed -n -e "s/^.*${host},//gp" | awk -F, '{ print $1 }' | awk '{ print $1 }'`"
 | 
						|
	ssh root@$ipv4_alice /etc/init.d/net.eth1 stop
 | 
						|
    fi
 | 
						|
done
 | 
						|
 | 
						|
cecho " * All uml instances are up now"
 |