#!/bin/bash
. cluster.conf
if [ $# != 2 ] ; then
echo "Usage: $0 [SIZE X] [SIZE Y]"
exit 1
fi
createip(){
x=$1
y=$2
X=$1
Y=$2
xsize=$3
ysize=$4
IP=$( printf "%x%x" $x $y )
if [ ! -d $TFTPDIR/$NAME$IP ] ; then return ; fi
if [ $( cat $DHCP | grep $NAME$IP | awk {'print $8'} \
| tr -d ";" ) != 192.168.0.$( printf "%d" 0x$IP ) ] ; then
echo "For $NAME$IP (192.168.0.$( printf "%d" 0x$IP )) invalid IP address"
return
fi
up=$( printf "0%x" $y )
if [ $y = 1 ] ; then y=$[ $ysize+1 ] ; fi
down=$( printf "0%x" $[ $y - 1] )
right=$( printf "%x0" $x )
if [ $x = 1 ] ; then x=$[ $xsize+1 ] ; fi
left=$( printf "%x0" $[ $x - 1 ] )
# eth1 up
eth1=$( printf "192.168.%d.%d" 0x$up 0x$IP )
# eth2 left
eth2=$( printf "192.168.%d.%d" 0x$left 0x$IP )
# eth3 down
eth3=$( printf "192.168.%d.%d" 0x$down 0x$IP )
# eth4 right
eth4=$( printf "192.168.%d.%d" 0x$right 0x$IP )
if [ $X = $xsize ] ; then X=0 ; fi
LRIGHT=$( printf "%x%x" $[ $X + 1 ] $Y )
RIGHT=$( printf "192.168.%d.%d" 0x$right 0x$LRIGHT )
LLEFT=$( printf "%x%x" $[ $x - 1 ] $Y )
LEFT=$( printf "192.168.%d.%d" 0x$left 0x$LLEFT )
if [ $X = 0 ] ; then X=$xsize ; fi
if [ $Y = $ysize ] ; then Y=0 ; fi
LUP=$( printf "%x%x" $X $[ $Y + 1 ] )
UP=$( printf "192.168.%d.%d" 0x$up 0x$LUP )
if [ $Y = 1 ] ; then Y=$[ $ysize + 1 ] ; fi
if [ $Y = 0 ] ; then Y=$ysize ; fi
LDOWN=$( printf "%x%x" $X $[ $Y - 1 ] )
DOWN=$( printf "192.168.%d.%d" 0x$down 0x$LDOWN )
echo "Configure ethernets: "
dev=1
for i in $eth1 $eth2 $eth3 $eth4 ; do
echo -n " ETH$dev: $i"
echo "DEVICE=eth$dev
ONBOOT=yes
BOOTPROTO=static
IPADDR=$i
NETMASK=255.255.255.0
"> $TFTPDIR/$NAME$IP/etc/sysconfig/network-scripts/ifcfg-eth$dev
dev=$[ $dev + 1 ]
echo
done
FILE=$TFTPDIR/$NAME$IP/etc/hosts
echo "Make /etc/hosts for $NAME$IP..."
echo "127.0.0.1 localhost.localdomain localhost l$NAME$IP
# Global
$SERVER $MASTER
" > $FILE
LIST=$( cat $DHCP | grep host | awk {'print $2'} | tr -d ";" )
for i in $LIST ; do
if ( [ $i = $NAME$LUP ] || \
[ $i = $NAME$LRIGHT ] || \
[ $i = $NAME$LDOWN ] || [ $i = $NAME$LLEFT ] ) ; then
cat $DHCP | grep $i | awk {'print $8" "$2" g"$2'} | tr -d ";" >> $FILE
else
cat $DHCP | grep $i | awk {'print $8" "$2" g"$2" l"$2'} | tr -d ";" >> $FILE
fi
done
echo "
# Local
$UP l$NAME$LUP up
$RIGHT l$NAME$LRIGHT right
$DOWN l$NAME$LDOWN down
$LEFT l$NAME$LLEFT left
">> $FILE
}
echo "Make /etc/host for SERVER..."
echo "127.0.0.1 localhost.localdomain localhost
192.84.144.190 levanzo.fe.infn.it levanzo
$SERVER $MASTER
" > /etc/hosts
cat $DHCP | grep host | awk {'print $8" "$2" g"$2" l"$2'} | tr -d ";" >> /etc/hosts
for a in $( seq $1 ) ; do
for b in $( seq $2 ) ; do
createip $a $b $1 $2
done
done