#!/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