Create FS

#!/bin/ksh

function entete
{
echo "|==================================================================================================================|"
printf "| %-50s | %-15s | %-10s%-10s%-10s | %-08s |\n" "File System" "Logical Volume" "" "Allocation" "" "  Nbre "
printf "| %-50s | %-15s | %-05s Mo %-05s |%-05s Ko %-05s | %-08s |\n" "" "" "" "" "" "" " de PP "
echo "|==================================================================================================================|"

}

function mess
{
printf "| %-50s | %-15s | %-04s %-10s | %-01s %-10s | %-04s%-04s |\n" $parm01 $lgvol "" "$AllocMo" "" "$AllocKo" "" $parm04
echo "|==================================================================================================================|"

}

function creation_vg
{
cat << @EOF > $fic_result

                     ______________________________
                    |                              |
                    | Demande de Volumetrie Disque |
                    |______________________________|


NOM DE LA MACHINE CONCERNEE : `hostname | tr [a-z] [A-Z]`
----------------------------

APPLICATION MISE EN PLACE : Securite des applications `echo ${appli} | tr [a-z] [A-Z]`
--------------------------

TYPE D ENVIRONNEMENT : `echo ${envir} | tr [a-z] [A-Z]`
---------------------

NOM DU VOLUME GROUP : ${Volume_G}
--------------------

VOLUMETRIE SOUHAITEE (MIN 5GO) :  5 Go
-------------------------------

ESTIMATION DE L EVOLUTION DE LA VOLUMETRIE : Suffisant sur 6 mois
-------------------------------------------

CET ESPACE DEMANDE T IL UNE PERFORMANCE IMPORTANTE ?  NON
---------------------------------------------------

CET ESPACE DOIT IL ETRE MIRRORE ?   $mirror
--------------------------------

@EOF

}

#========= parm1=fs a creer
#========= parm2=environnement PROD BETA ...
#========= parm3=application
#========= parm4=nbre de pp
#========= parm5=owner:group

if [ $# -lt 4 ];then
 echo " parametre a passer : fsAcreer envir appli nbpp owner:group \"avec autres fs;nbpp\" ou dans un fichier"
 exit
fi

parm01=$1
parm02=`echo $2 | tr [A-Z] [a-z]`
parm03=$3
parm04=$4

##################### owner et group
if [ -z "$5" ]; then
 owner="xxprod"
 group="xxprod"
else
 if [ `echo $5 | grep ":" | wc -l` -ne 1 ]; then
     echo " parametre a passer : fsAcreer envir appli nbpp owner:group"
    exit
 fi
 owner=`echo $5 | cut -d":" -f1`
 group=`echo $5 | cut -d":" -f2`
 if [ -z "$owner" -o -z "$group" ]; then
    echo " parametre a passer : fsAcreer envir appli nbpp owner:group"
    exit
 fi
fi

##################### si plusieurs FS
multi=0
if [ ! -z "$6" ]; then
 multi=1
fi

export envir=$parm02
export appli=$parm03

if [ -z "$parm04" ]; then $parm04=1 ; fi
AllocMo=`expr $parm04 \* 128`
AllocKo=`expr $AllocMo \* 1024`
mirror="NON"

   case $parm02 in
      prod|PROD)  suff="${appli}pr"
              ###if [ "X`hostname`" = "Xpluto" ]; then suff="${appli}wh" ; fi
              mirror="OUI"
                   ;;
      beta|BETA)  suff="${appli}va"
              if [ "X`hostname`" = "Xpluto" ]; then suff="${appli}wh" ; fi
                   ;;
      form|FORM)  suff="${appli}fo"
                   ;;
      forb|FORB)  suff="${appli}fb"
                   ;;
      preprod|PREPROD)  suff="${appli}pp"
                   ;;
      *)  suff="${appli}xx"
                   ;;
   esac
#============= recherche vg present

  VGvol=`lsvg | grep ^v$suff | tail -1`
#########   if [ -z "$VGvol" -a "X`hostname`"="Xbill" ]; then VGvol=`lsvg | grep ^$suff` ; fi
####   if [ "X`hostname`" = "Xbill" ]; then VGvol=`lsvg | grep ^$suff | tail -1` ; fi

fic_result="/tmp/creat_fs_$envir_$appli_`date +%d%m%Y%H%M%S"

######### if [ ! -d "`dirname $parm01`" -o -z "$VGvol" ]; then
if [ -z "$VGvol" ]; then
   VGFS=VG
   echo " creation d un nouveau VG "
   Volume_G="v${suff}01"
   lgvol="l${suff}0101"
   Free_G=5000000
   creation_vg
else
  VGFS=FS
  Volume_G=${VGvol}
   ##############lgvol=`lsvg -l $VGvol | sort | tail -1`
   lgvol=`lsvg -l $VGvol | egrep -vw "$VGvol|LV NAME|N/A" | sort +0 | tail -1`
#=========== cas VG recemment creer sans lv
   if [ -z "${lgvol}" ]; then
      lgvol="l"`echo ${VGvol} | awk '{ print substr($0,2) }'`"00"
   fi

   ppsize=`lsvg $VGvol | grep "PP SIZE" | cut -d":" -f3 | cut -d"(" -f1 | sed 's/megabyte//g' | sed 's/ //g'`
     AllocMo=`expr $parm04 \* $ppsize`
     AllocKo=`expr $AllocMo \* 1024`
     AllocMo=`./outils/mise_en_forme_num $AllocMo 3`
     AllocKo=`./outils/mise_en_forme_num $AllocKo 3`

  if [ "X`hostname`" = "Xbill" -a "`echo $lgvol | awk '{print substr($0,10,2)}'`" = "Xlv" ]; then
   lgvol_bis=`echo $lgvol | awk '{print substr($0,7,2)}'`
   lgvol_bis=`expr $lgvol_bis + 1`
   lgvol_bis=`printf "%02d" $lgvol_bis`
   lgvol=`echo $lgvol | awk '{print substr($0,1,6)}'`$lgvol_bis"_lv"
  else
   lgvol_bis=`echo $lgvol | awk '{print substr($0,8,4)}'`
   lgvol_bis=`expr $lgvol_bis + 1`
   lgvol_bis=`printf "%04d" $lgvol_bis`
   lgvol=`echo $lgvol | awk '{print substr($0,1,7)}'`$lgvol_bis
  fi

  Free_G=`lsvg $Volume_G | grep FREE | cut -d":" -f3 | cut -d"(" -f2 | sed 's/megabytes)//g'`
   Free_G=`expr $Free_G \* 1024`

cat << @EOF > $fic_result

Bonjour,

 Repondre a : toto@titi

 Merci de creer au plus vite le File system decrit ci dessous :

    Noeud : `hostname`

   Application   : $appli
   Environnement : $envir

   VG = $Volume_G     Espace libre `ksh ./outils/mise_en_forme_num $Free_G 3` ko

   Le repertoire `basename $parm01` devra appartenir au compte ${owner}:${group}
         soit owner=${owner}, group=${group}

@EOF

entete >> $fic_result
mess >> $fic_result

if [ $multi -gt 0 ]; then
 if [ -f "$6" ]; then
    fic=`cat "$6"`
 else
    if [ `echo $6 | grep ";" | wc -l` -eq 0 ]; then
       echo " probleme parametre $6 passe "
       exit
    fi
    fic="$6"
 fi
 for ligne in $fic
   do
     parm01=`echo $ligne | cut -d";" -f1`
     parm04=`echo $ligne | cut -d";" -f2`
     lgvol_bis=`echo $lgvol | awk '{print (substr($0,length($0)-3)+1)}'`
     lgvol_bis=`printf "%04d" $lgvol_bis`
     lgvol=`echo $lgvol | awk '{print substr($0,1,length($0)-4)}'`$lgvol_bis
     AllocMo=`expr $parm04 \* $ppsize`
     AllocKo=`expr $AllocMo \* 1024`
     AllocMo=`./outils/mise_en_forme_num $AllocMo 3`
     AllocKo=`./outils/mise_en_forme_num $AllocKo 3`
      mess >> $fic_result
   done
fi
fi

cat << @EOF >> $fic_result


Cdt
@EOF


cat $fic_result

echo "resultat dans fichier $fic_result"
LOG_DEST=toto@titi
LOG_DEST_New=toto@titi
echo "mail -s \"[URGENT] Demande de creation de $VGFS sur `hostname`\" -c \"$LOG_DEST_New\" $LOG_DEST < ${fic_result} "
exit

Previous page: Droits des fichiers
Page suivante : Create New Lv Fs