next up previous contents
Next: updateuser.sh Up: Scripts di usability Previous: updatefile.sh   Indice

confignet.sh

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



Mario Cavicchi 2004-07-22