[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/sbin/ -> mirroring_mise_en_place.sh (source)

   1  #!/bin/bash
   2  
   3  #/usr/share/se3/sbin/mirroring_mise_en_place.sh
   4  #
   5  ## $Id: mirroring_mise_en_place.sh 7959 2013-12-01 01:06:12Z keyser $ ##
   6  #
   7  ##### Mise en place du mirroring entre le disk principal et un DEUXIEME DISK #####
   8  # au choix de l'utilisateur
   9  # Franck Molle - Academie de Rouen
  10  # 09/2005 - Ajout de l'arret pour ldap/mysql avant le mirroring
  11  # Stephane Boireau - Academie de Rouen
  12  # 16/01/2006 - Ajout du choix du partitionnement automatique ou non du deuxieme disque.
  13  
  14  #Couleurs
  15  COLTITRE="\033[1;35m"    # Rose
  16  COLPARTIE="\033[1;34m"    # Bleu
  17  
  18  COLTXT="\033[0;37m"    # Gris
  19  COLCHOIX="\033[1;33m"    # Jaune
  20  COLDEFAUT="\033[0;33m"    # Brun-jaune
  21  COLSAISIE="\033[1;32m"    # Vert
  22  
  23  COLCMD="\033[1;37m"    # Blanc
  24  
  25  COLIMPORTANT="\033[1;33m"    # Jaune
  26  
  27  COLERREUR="\033[1;31m"    # Rouge
  28  COLINFO="\033[0;36m"    # Cyan
  29  
  30  
  31  if [ "$1" = "--help" -o "$1" = "-h" ]; then
  32      echo -e "$COLINFO"
  33      echo "Permet de mettre en place un mirroring entre deux disques"
  34      echo "Script interactif"
  35      echo "Usage : aucune option"
  36      echo -e "$COLTXT"
  37      exit
  38  fi
  39  
  40  BLEU="\033[1;34m"
  41  BROWN="\033[0;33m"
  42  ROSE="\033[1;35m"
  43  GRIS="\033[0;37m"
  44  VERT="\033[1;32m"
  45  ROUGE="\033[1;31m"
  46  BLANC="\033[00m"
  47  
  48  
  49  
  50  clear
  51  echo -e "$COLTITRE}
  52  ***************************************************************
  53  * Ce script va mettre en place un mirroring a l'aide de rsync *
  54  * entre votre disque principale (/dev/XXX ou /dev/ciss/XXX,   *
  55  * et un 2eme disque de votre choix                            *
  56  *                                                             *
  57  *                                                             *
  58  *$COLIMPORTANT}          /!\ ATTENTION /!\   A CE QUE VOUS FAITES     $COLTITRE}      *
  59  *  $COLIMPORTANT}    SI LE DEUXIEME DISQUE CONTIENT DEJA DES DONNEES   $COLTITRE}     *
  60  *$COLTITRE}                                                             *
  61  *   suggestions, corrections ... : franck.molle@ac-rouen.fr   *
  62  *                                                             *
  63  *          appuyez sur une touche pour continuer              *
  64  ***************************************************************"
  65  read OK
  66  echo -e "$COLTXT}"
  67  
  68  
  69  if [ -n "$(df | grep vol0-lv_home)" ]; then
  70  echo -e "$COLERREUR}Il semble que votre disque soit en LVM "
  71      echo -e "$COLERREUR}Le script ne peut mettre en place un mirroring avec du LVM pour le moment"
  72      echo -e "$COLTXT"
  73      exit 1
  74  
  75  fi
  76  
  77  
  78  
  79  # detection de rsync
  80  if [ -e /usr/bin/rsync ]; then
  81      echo ""
  82      #echo "Rsync est deja installe"
  83  else
  84      echo -e "$COLTXT}"
  85      echo "Rsync est necessaire au mirroring mais ne semble pas "
  86      echo -e "installe, voulez-vous l'installer maintenant ? ($COLCHOIX}o/n$COLTXT})"
  87      echo "(une connexion a internet est necessaire)"
  88      echo -e "Reponse: [$COLDEFAUT}o$COLTXT}] $COLSAISIE\c"
  89      read REPONSE
  90  
  91      if [ -z "$REPONSE" ]; then
  92          REPONSE="o"
  93      fi
  94  
  95      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
  96      do
  97          echo -e "$COLTXT"
  98          echo "Rsync est necessaire au mirroring mais ne semble pas "
  99          echo -e "installe, voulez vous l'installer maintenant ? ($COLCHOIX}o/n$COLTXT})"
 100          echo "(une connexion a internet est necessaire)"
 101          echo -e "Reponse: $COLSAISIE\c"
 102          read REPONSE
 103      done
 104  
 105      if [ "$REPONSE" = "o" ]; then
 106          echo -e "$COLTXT"
 107          echo "Installation de rsync lancee"
 108          echo -e "$COLCMD\c"
 109          apt-get update
 110          apt-get install rsync
 111      else
 112          echo -e "$COLTXT"
 113          echo "Pas d'installation de rsync."
 114      fi
 115  fi
 116  
 117  
 118  while [ "$DISK1OK" != "o" ]
 119  do
 120  
 121      DD1DEFAULT=$(cat /etc/fstab | grep -v "^#" | grep /home | tr "\t" " " | cut -d" " -f1 | sed -e "s|[0-9]||g")
 122  
 123      if [ "$(echo $DD1DEFAULT | wc -m)" != "4" ]; then
 124          DD1DEFAULT="/dev/sda"
 125      fi
 126  
 127      echo -e "$COLTXT"
 128      echo -e "Quel est votre premier disque ? [$COLDEFAUT}$DD1DEFAULT}$COLTXT}] $COLSAISIE}\c"
 129      read  DISK1
 130      if [ -z "$DISK1" ]; then
 131          DISK1=$DD1DEFAULT}
 132      fi
 133  
 134      echo -e "$COLTXT"
 135      echo -e "Votre premier disque est $COLINFO}$DISK1$COLTXT}"
 136      echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 137      read DISK1OK
 138      if [ -z "$DISK1OK" ]; then
 139          DISK1OK="o"
 140      fi
 141      while [ "$DISK1OK" != "o" -a "$DISK1OK" != "n" ]
 142      do
 143          echo -e "$COLTXT"
 144          echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 145          read DISK1OK
 146      done
 147  done
 148  
 149  
 150  #Sauvegarde de la table des partitions du premier disque
 151  echo -e "$COLCMD"
 152  sfdisk -d $DISK1 > /tmp/part
 153  
 154  #Detection des partitions disque source
 155  PARTSWAP=`fdisk -l $DISK1 | grep swap | sed -e "s/ .*//"`
 156  PARTROOT=`df | grep "/\$" | sed -e "s/ .*//"`
 157  #PARTHOME=`df | grep "/home" | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 158  #PARTVARSE3=`df | grep "/var/se3" | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 159  #TSTVAR=`df | grep "/var"| grep -v /var/se3`
 160  
 161  PARTHOME=`df | tr "\t" " " | sed -e "s/ \{2,\}/ /g" | grep " /home$" | sed -e "s/ .*//"`
 162  PARTVARSE3=`df | tr "\t" " " | sed -e "s/ \{2,\}/ /g" | grep " /var/se3$" | sed -e "s/ .*//"`
 163  TSTVAR=`df | tr "\t" " " | sed -e "s/ \{2,\}/ /g" | grep "/var$"| grep -v /var/se3`
 164  
 165  echo -e "$COLTXT"
 166  echo "Le script a detecte les partitions suivantes:"
 167  echo ""
 168  echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP"
 169  echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT"
 170  if [ ! -z "$TSTVAR" ]; then
 171      echo -e "$COLCMD\c"
 172      #PARTVAR=`df | grep "/var"| grep -v /var/se3 | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 173      PARTVAR=`df | tr "\t" " " | sed -e "s/ \{2,\}/ /g" | grep "/var$"| grep -v /var/se3 | sed -e "s/ .*//"`
 174      echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR"
 175  else
 176      # echo -e "Pas de Partition /var de detectee "
 177      PARTVAR="aucune"
 178  fi
 179  
 180  echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME"
 181  echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3"
 182  
 183  echo -e "$COLTXT"
 184  echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 185  read DETECTOK
 186  if [ -z "$DETECTOK" ]; then
 187      DETECTOK="o"
 188  fi
 189  while [ "$DETECTOK" != "o" -a "$DETECTOK" != "n" ]
 190  do
 191      echo -e "$COLTXT"
 192      echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 193      read DETECTOK
 194  done
 195  
 196  if [ "$DETECTOK" = "n" ]; then
 197      while [ "$PARTOK" != "o" ]
 198      do
 199          echo -e "$COLTXT}Quelle est votre partition SWAP ? [$COLDEFAUT}/dev/sda1$COLTXT}] $COLSAISIE}\c"
 200          read  PARTSWAP
 201          if [ -z "$PARTSWAP" ]; then
 202              PARTSWAP="/dev/sda1"
 203          fi
 204          echo -e "$COLTXT}Quelle est votre partition RACINE ? [$COLDEFAUT}/dev/sda2$COLTXT}] $COLSAISIE}\c"
 205          read  PARTROOT
 206          if [ -z "$PARTROOT" ]; then
 207              PARTROOT="/dev/sda2"
 208          fi
 209  
 210          echo -e "$COLTXT}Quelle est votre partition /VAR ? [$COLDEFAUT}aucune$COLTXT}] $COLSAISIE}\c"
 211          read  PARTVAR
 212          if [ -z "$PARTVAR" ]; then
 213              PARTVAR="/dev/sda3"
 214          fi
 215  
 216          echo -e "$COLTXT}Quelle est votre partition HOME ? [$COLDEFAUT}/dev/sda6$COLTXT}] $COLSAISIE}\c"
 217          read  PARTHOME
 218          if [ -z "$PARTHOME" ]; then
 219              PARTHOME="/dev/sda6"
 220          fi
 221  
 222          echo -e "$COLTXT}Quelle est votre partition VAR/SE3 ? [$COLDEFAUT}/dev/sda5$COLTXT}] $COLSAISIE}\c"
 223          read  PARTVARSE3
 224          if [ -z "$PARTVARSE3" ]; then
 225              PARTVARSE3="/dev/sda5"
 226          fi
 227  
 228          echo -e "$COLTXT"
 229          echo "Voici la liste de vos partitions :"
 230          echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP"
 231          echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT"
 232  
 233          if [ "$PARTVAR" != "aucune" ]; then
 234              echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR"
 235          fi
 236  
 237          echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME"
 238          echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3"
 239  
 240          echo -e "$COLTXT"
 241          echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 242          read PARTOK
 243          if [ -z "$PARTOK" ]; then
 244              PARTOK="o"
 245          fi
 246  
 247          while [ "$PARTOK" != "o" -a "$PARTOK" != "n" ]
 248          do
 249              echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 250              read PARTOK
 251          done
 252  
 253  
 254      done
 255  fi
 256  
 257  DISK2OK="n"
 258  while [ "$DISK2OK" != "o" ]
 259  do
 260      DEFAULT_DISK2="/dev/sdb"
 261      liste_dd=$(sfdisk -g | grep -v "$DISK1:" | cut -d":" -f1)
 262      test1=$liste_dd[*]}
 263      test2=($test1)
 264      j=0
 265      for i in $test1; do
 266          j=$[j+1]
 267      done    
 268      if [ $j -ge 1 ]; then
 269          cpt=0
 270          while [ $cpt -le $j ]
 271          do
 272              if sfdisk -s $test2[$cpt]} >/dev/null 2>&1; then
 273                  DEFAULT_DISK2="$test2[$cpt]}"
 274                  break
 275              fi
 276  
 277              cpt=$(($cpt+1))
 278          done
 279      fi
 280  
 281      echo -e "$COLTXT"
 282      echo -e "Quel est votre deuxieme disque ? [$COLDEFAUT}$DEFAULT_DISK2}$COLTXT}] $COLSAISIE\c"
 283      read  DISK2
 284      if [ -z "$DISK2" ]; then
 285          DISK2=$DEFAULT_DISK2
 286      fi
 287  
 288      echo -e "$COLTXT"
 289      echo -e "Votre deuxieme disk est $COLINFO}$DISK2"
 290  
 291      echo -e "$COLTXT"
 292      echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 293      read DISK2OK
 294      if [ -z "$DISK2OK" ]; then
 295          DISK2OK="o"
 296      fi
 297      while [ "$DISK2OK" != "o" -a "$DISK2OK" != "n" ]
 298      do
 299          echo -e "$COLTXT"
 300          echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 301          read DISK2OK
 302      done
 303  done
 304  
 305  if [ "$DISK2" = "$DISK1"  ]; then
 306      echo -e "$COLERREUR}Erreur !! Vous avez saisi la meme valeur pour le 1er et le 2eme disque."
 307      echo -e "$COLERREUR}Le script ne peut mettre en place un mirroring sur le meme disque."
 308      echo -e "$COLTXT"
 309      exit 1
 310  fi
 311  
 312  echo -e "$COLCMD"
 313  DISK2PARTS=`sfdisk -l $DISK2 2>/dev/null`
 314  if [ -z "$DISK2PARTS" ]; then
 315      echo -e "$COLERREUR}Erreur !! Aucun disque $DISK2 detecte."
 316      echo -e "$COLERREUR}Vous avez saisi une valeur erronee pour le 2eme disque."
 317      echo -e "$COLTXT"
 318      exit 1
 319  fi
 320  
 321  #recuperation des noms de partitions du disque 2
 322  PARTSWAP_CIBLE=`echo $PARTSWAP | sed -e "s#$DISK1#$DISK2#"`
 323  PARTROOT_CIBLE=`echo $PARTROOT | sed -e "s#$DISK1#$DISK2#"`
 324  PARTHOME_CIBLE=`echo $PARTHOME | sed -e "s#$DISK1#$DISK2#"`
 325  PARTVARSE3_CIBLE=`echo $PARTVARSE3 | sed -e "s#$DISK1#$DISK2#"`
 326  
 327  echo -e "$COLTXT"
 328  echo -e "Voici la liste des (futures) partitions de$COLINFO} $DISK2"
 329  echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP_CIBLE"
 330  echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT_CIBLE"
 331  if [ "$PARTVAR" != "aucune" ]; then
 332      PARTVAR_CIBLE=`echo $PARTVAR | sed -e "s#$DISK1#$DISK2#"`
 333      echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR_CIBLE"
 334  fi
 335  echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME_CIBLE"
 336  echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3_CIBLE"
 337  
 338  echo -e "$COLTXT"
 339  echo -e "Voulez-vous poursuivre l'installation ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 340  read REPONSE
 341  if [ -z "$REPONSE" ]; then
 342      REPONSE="o"
 343  fi
 344  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 345  do
 346      echo -e "$COLTXT"
 347      echo -e "Voulez-vous poursuivre l'installation ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 348      read REPONSE
 349  done
 350  if [ "$REPONSE" = "n" ]; then
 351      echo -e "$COLERREUR}Action abandonnee, rien n'a ete modifie."
 352      echo -e "$COLTXT"
 353      exit 0
 354  fi
 355  
 356  
 357  #creation des repertoires de travail si besoin
 358  if  [ -e /mirror ]; then
 359      echo -e "$COLTXT"
 360      echo -e "Le repertoire /mirror existe deja..."
 361  else
 362      echo -e "$COLCMD\c"
 363      mkdir /mirror/
 364  fi
 365  if  [ -e /mirror/part_root ]; then
 366      echo -e "$COLTXT"
 367      echo -e "Le repertoire /mirror/part_root existe deja..."
 368  else
 369      echo -e "$COLCMD\c"
 370      mkdir /mirror/part_root
 371  fi
 372  
 373  if [ "$PARTVAR" != "aucune" ]; then
 374      if  [ -e /mirror/part_var ]; then
 375          echo -e "$COLTXT"
 376          echo -e "Le repertoire /mirror/part_var existe deja..."
 377      else
 378          echo -e "$COLCMD\c"
 379          mkdir /mirror/part_var
 380      fi
 381  fi
 382  if  [ -e /mirror/part_home ]; then
 383      echo -e "$COLTXT"
 384      echo -e "Le repertoire /mirror/part_home existe deja..."
 385  else
 386      echo -e "$COLCMD\c"
 387      mkdir /mirror/part_home
 388  fi
 389  
 390  
 391  
 392  if  [ -e /mirror/part_varse3 ]; then
 393      echo -e "$COLTXT"
 394      echo -e "Le repertoire /mirror/part_varse3 existe deja..."
 395  else
 396      echo -e "$COLCMD\c"
 397      mkdir /mirror/part_varse3
 398  fi
 399  
 400  # creation des partitions du 2eme disque
 401  REPONSE=""
 402  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 403  do
 404      echo -e "$COLTXT"
 405      echo -e "Voulez-vous creer les partitions et formater le disque $COLINFO}$DISK2$COLTXT} ? ($COLCHOIX}o/n$COLTXT})"
 406      echo -e "$COLIMPORTANT}Attention, le contenu de $DISK2 sera efface."
 407      echo -e "$COLTXT"
 408      echo -e "Reponse: $COLSAISIE}\c"
 409      read REPONSE
 410  done
 411  
 412  if [ "$REPONSE" = "o" ]; then
 413  
 414      REP=""
 415      while [ "$REP" != "1" -a  "$REP" != "2" ]
 416      do
 417          echo -e "$COLTXT"
 418          echo -e "Voulez-vous effectuer un partitionnement automatique ($COLCHOIX}1$COLTXT})"
 419          echo -e "ou souhaitez-vous effectuer un partitionnement manuel ($COLCHOIX}2$COLTXT}) ? $COLSAISIE\c"
 420          read REP
 421      done
 422  
 423      if [ "$REP" = "1" ]; then
 424          echo -e "$COLTXT"
 425          echo -e "Creation des partitions et des systemes de fichiers..."
 426          echo -e "$COLCMD"
 427          sfdisk $DISK2 < /tmp/part
 428          if [ $? != 0 ]; then
 429              echo -e "$COLIMPORTANT}Erreur lors de la creation des partitions de $DISK2 "
 430              echo -e "Le script ne peut se poursuivre normalement."
 431              echo -e "Vos disques ne sont peut etre pas strictement identiques."
 432              echo -e "$COLTXT"
 433              echo -e "Vous pouvez executer cfdisk et partitionner manuellement de la meme façon que le 1er disque."
 434              echo ""
 435              echo -e "Pour rappel, voici l'ordre dans lequel elles devront apparaitre:"
 436              echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP_CIBLE"
 437              echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT_CIBLE"
 438              if [ "$PARTVAR" != "aucune" ]; then
 439                  echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR_CIBLE"
 440              fi
 441              echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME_CIBLE"
 442              echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3_CIBLE"
 443  
 444              REPONSE=""
 445              while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 446              do
 447                  echo -e "$COLTXT"
 448                  echo -e "Voulez-vous lancer cfdisk maintenant ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 449                  read REPONSE
 450              done
 451  
 452              if [ "$REPONSE" = "n" ]; then
 453                  echo -e "$COLERREUR}Operation annulee, rien n'a ete effectue !!!"
 454                  echo -e "$COLTXT"
 455                  exit 1
 456              fi
 457  
 458              echo -e "$COLCMD"
 459              /sbin/cfdisk $DISK2
 460          fi
 461      else
 462          echo -e "$COLTXT"
 463          echo -e "Vous pouvez executer cfdisk et partitionner manuellement de la meme façon que le 1er disque."
 464          echo ""
 465          echo -e "Pour rappel, voici l'ordre dans lequel elles devront apparaitre:"
 466          echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP_CIBLE"
 467          echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT_CIBLE"
 468          if [ "$PARTVAR" != "aucune" ]; then
 469              echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR_CIBLE"
 470          fi
 471          echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME_CIBLE"
 472          echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3_CIBLE"
 473  
 474          REPONSE=""
 475          while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 476          do
 477              echo -e "$COLTXT"
 478              echo -e "Voulez-vous lancer cfdisk maintenant ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 479              read REPONSE
 480          done
 481  
 482          if [ "$REPONSE" = "n" ]; then
 483              echo -e "$COLERREUR}Operation annulee, rien n'a ete effectue !!!"
 484              echo -e "$COLTXT"
 485              exit 1
 486          fi
 487  
 488          echo -e "$COLCMD"
 489          /sbin/cfdisk $DISK2
 490      fi
 491  
 492      if [ "$PARTVAR" != "aucune" ]; then
 493          echo -e "$COLTXT"
 494          echo -e "Partition /VAR :\t$COLTXT} $PARTVAR"
 495          echo -e "$COLCMD"
 496          /sbin/mkswap $PARTSWAP_CIBLE  && /sbin/mke2fs -j $PARTROOT_CIBLE && /sbin/mke2fs -j $PARTVAR_CIBLE && /sbin/mkfs.xfs -f $PARTHOME_CIBLE && /sbin/mkfs.xfs -f $PARTVARSE3_CIBLE
 497      else
 498          echo -e "$COLCMD"
 499          /sbin/mkswap $PARTSWAP_CIBLE  && /sbin/mke2fs -j $PARTROOT_CIBLE && /sbin/mkfs.xfs -f $PARTHOME_CIBLE && /sbin/mkfs.xfs -f /$PARTVARSE3_CIBLE
 500      fi
 501  
 502  
 503      if [ $? != 0 ]; then
 504          echo -e "$COLERREUR}Erreur lors du formatage des partitions de $DISK2 "
 505          echo -e "Le script ne peut se poursuivre."
 506          echo -e "$COLTXT"
 507          exit 1
 508      fi
 509  
 510      clear
 511  fi
 512  
 513  ######### traitement de la crontab #############
 514  echo -e "$COLTXT"
 515  echo "Il va maintenant vous etre propose d'automatiser le mirroring."
 516  grep "/mirror/mirror_rsync.sh" /etc/crontab > /tmp/mirror_crontab_$ladate}.tmp
 517  if [ -s /tmp/mirror_crontab_$ladate}.tmp ]; then
 518      echo -e "$COLINFO"
 519      echo "Une ou des taches de mirroring sont deja programmees:"
 520      echo -e "$COLCMD\c"
 521      cat /tmp/mirror_crontab_$ladate}.tmp
 522      echo -e "$COLINFO"
 523      echo "Veillez a ne pas proposer les memes dates/heures pour la nouvelle tache"
 524      echo "si vous en programmez une."
 525  fi
 526  
 527  echo -e "$COLTXT"
 528  echo -e "Voulez-vous mettre en place le script rsync en crontab ? ($COLCHOIX}o/n$COLTXT})"
 529  echo -e "Il se lancera tous les jours ouvrables a l'heure de votre choix."
 530  echo -e "Il vous sera aussi propose de le lancer plusieurs fois par jour."
 531  echo -e "Reponse: [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 532  read REPONSE
 533  if [ -z "$REPONSE" ]; then
 534      REPONSE="o"
 535  fi
 536  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 537  do
 538      echo -e "$COLTXT"
 539      echo -e "Voulez-vous mettre en place le script rsync en crontab ? ($COLCHOIX}o/n$COLTXT})"
 540      echo "Il se lancera tous les jours ouvrables a l'heure de votre choix."
 541      echo "Il vous sera aussi propose de le lancer plusieurs fois par jour."
 542      echo -e "Reponse: $COLSAISIE}\c"
 543      read REPONSE
 544  done
 545  ladate=$(date "+%Y%m%d%H%M%S")
 546  
 547  if [ "$REPONSE" = "o" ]; then
 548  #####
 549      while [ "$CRONAJOUT" != "n" ]
 550      do
 551          echo -e "$COLTXT"
 552          echo -e "Vous allez devoir preciser a quel moment de la nuit le script s'executera."
 553          echo -e "Attention, le script coupe ldap et mysql durant son execution, "
 554          echo -e "il ne doit donc pas etre lance lorsque le serveur est utilise."
 555  
 556          grep "/mirror/mirror_rsync.sh" /etc/crontab > /tmp/mirror_crontab_$ladate}.tmp
 557          if [ -s /tmp/mirror_crontab_$ladate}.tmp ]; then
 558              echo -e "$COLINFO"
 559              echo "Une ou des taches de mirroring sont deja programmees:"
 560              echo -e "$COLCMD\c"
 561              cat /tmp/mirror_crontab_$ladate}.tmp
 562              echo -e "$COLINFO"
 563              echo "Veillez a ne pas proposer les memes dates/heures pour la nouvelle tache."
 564          fi
 565  
 566          echo -e "$COLTXT"
 567          echo -e "Veuillez indiquer les heures et les minutes sous la forme hh:mn [$COLDEFAUT}02:30$COLTXT}] $COLSAISIE\c"
 568          read HMCRON
 569          if [ -z "$HMCRON" ]; then
 570              HMCRON="02:30"
 571          fi
 572  
 573          echo -e "$COLTXT"
 574          echo -e "Vous voulez que le script se lance tous les jours a $HMCRON"
 575          echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 576          read CRONOK
 577          if [ -z "$CRONOK" ]; then
 578              CRONOK="o"
 579          fi
 580          while [ "$CRONOK" != "o" -a "$CRONOK" != "n" ]
 581          do
 582              echo -e "$COLTXT"
 583              echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 584              read CRONOK
 585          done
 586  
 587          if [ "$CRONOK" = "o" ]; then
 588              MCRON=`echo $HMCRON | cut -d: -f2`
 589              HCRON=`echo $HMCRON | cut -d: -f1`
 590              echo "$MCRON $HCRON * * * root /mirror/mirror_rsync.sh" >> /etc/crontab
 591  
 592              echo -e "$COLTXT"
 593              echo "Modification de la crontab effectuee."
 594              echo ""
 595              echo "Vous avez choisi que le script se lance tous les jours a $HMCRON"
 596              echo -e "Voulez-vous qu'il se lance egalement a un autre moment ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 597              read CRONAJOUT
 598              while [ "$CRONAJOUT" != "o" -a "$CRONAJOUT" != "n" ]
 599              do
 600                  echo -e "$COLTXT"
 601                  #echo "Vous avez choisi que le script se lance tous les jours ouvrables a $HMCRON"
 602                  echo "Vous avez choisi que le script se lance tous les jours a $HMCRON"
 603                  echo -e "Voulez-vous qu'il se lance egalement a un autre moment ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE}\c"
 604                  read CRONAJOUT
 605              done
 606          fi
 607      done
 608  fi
 609  ##########
 610  # Configuration de l'envoi de mail ####
 611  echo -e "$COLTXT"
 612  echo -e "En cas de probleme lors du mirroring des disques,"
 613  echo -e "le script vous previendra par mail."
 614  
 615  while [ "$MAIL_ADMINOK" != "o" ]
 616  do
 617      echo -e "$COLTXT"
 618      echo "Il vous faut choisir l'adresse mail qui recevra les rapports d'erreur."
 619      echo "Quelle adresse mail voulez vous utiliser ? ex : admin@votre_domaine"
 620      echo -e "Adresse email: $COLSAISIE\c"
 621      read MAIL_ADMIN
 622      echo -e "$COLTXT"
 623      echo -e "Vous avez choisi $COLINFO}$MAIL_ADMIN}$COLTXT} comme adresse email."
 624      echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 625      read MAIL_ADMINOK
 626      if [ -z "$MAIL_ADMINOK" ]; then
 627          MAIL_ADMINOK="o"
 628      fi
 629  
 630  done
 631  
 632  
 633  ################# creation des scripts ########################
 634  
 635  #------------------ UUID partitions racine ------------------------------------"
 636  PARTROOTUUID=$(blkid | grep $PARTROOT | cut -d" " -f2 | sed s/\"\//g |  sed s"/UUID=//")
 637  PARTROOTUUID_CIBLE=$(blkid | grep $PARTROOT_CIBLE | cut -d" " -f2 | sed s/\"\//g |  sed s"/UUID=//")
 638  
 639  
 640  # creation du script rsync
 641  echo -e "$COLCMD"
 642  
 643  if [ -e /mirror/param_mirror_rsync.sh ]; then
 644      mv /mirror/param_mirror_rsync.sh /mirror/param_mirror_rsync.sav_$(date "+%Y%m%d-%H%M%S").sh
 645  fi
 646  
 647  touch /mirror/param_mirror_rsync.sh
 648  chmod 700 /mirror/param_mirror_rsync.sh
 649  echo "# Fichier de parametres du mirroring
 650  
 651  # Disque source
 652  DISK1=$DISK1
 653  
 654  # Disque miroir
 655  DISK2=$DISK2
 656  
 657  # Adresse mail d'alerte
 658  MAIL_ADMIN=$MAIL_ADMIN
 659  
 660  # Liste des partitions sources
 661  PARTROOT=$PARTROOT
 662  PARTROOTUUID=$PARTROOTUUID
 663  PARTVAR=$PARTVAR
 664  PARTHOME=$PARTHOME
 665  PARTVARSE3=$PARTVARSE3
 666  
 667  # Liste des partitions cibles
 668  PARTROOT_CIBLE=$PARTROOT_CIBLE
 669  PARTROOTUUID_CIBLE=$PARTROOTUUID_CIBLE
 670  PARTVAR_CIBLE=$PARTVAR_CIBLE
 671  PARTHOME_CIBLE=$PARTHOME_CIBLE
 672  PARTVARSE3_CIBLE=$PARTVARSE3_CIBLE
 673  
 674  
 675  # Attention: En cas de modification manuelle, relancer le script
 676  #            /usr/share/se3/sbin/genere_mirror_rsync_sh.sh
 677  " > /mirror/param_mirror_rsync.sh
 678  
 679  bash /usr/share/se3/sbin/genere_mirror_rsync_sh.sh
 680  
 681  
 682  ###################### fin creation des scripts ###############################
 683  
 684  clear
 685  echo -e "$COLINFO"
 686  echo "Script d'installation termine !!!"
 687  echo ""
 688  echo ""
 689  echo "Le script d'installation a genere trois scripts dans /mirror !"
 690  echo "Le script rsync /mirror/mirror_rsync.sh"
 691  echo
 692  echo "Un script /mirror/mount_$DISK2.sh vous permettant de monter les partitions"
 693  echo "de $DISK2 dans les sous repertoires de /mirror afin d'en visualiser le contenu"
 694  echo
 695  echo "Un script /mirror/umount_$DISK2.sh vous permettant de demonter vos partitions"
 696  echo "de $DISK2 dans les sous repertoires de /mirror"
 697  
 698  echo -e "$COLTXT"
 699  echo "Il faut maintenant lancer le script rsync de suite "
 700  echo -e "afin d'effectuer une premiere synchronisation ($COLCHOIX}Ok$COLTXT}) $COLSAISIE\c"
 701  read REPONSE
 702  
 703  mount -t ext3 $PARTROOT_CIBLE  /mirror/part_root
 704  /usr/bin/rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/sys/* --exclude=/cdrom/* --exclude=/var/*  / /mirror/part_root | tee -a \$FICHIERLOG
 705  
 706  echo -e "$COLTITRE"
 707  echo "Installation de grub"
 708  echo -e "$COLCMD"
 709  grub-install --root-directory=/mirror/part_root --no-floppy --recheck $DISK2
 710  #grub-install --root-directory=/mirror/part_root --no-floppy --recheck hd1 
 711  echo -e "$COLINFO Grub installé !!"
 712  
 713  
 714  
 715  
 716  mount -t proc none /mirror/part_root/proc
 717  mount -o bind /dev /mirror/part_root/dev
 718  mount -t sysfs sys /mirror/part_root/sys
 719  
 720  mount $PARTVAR_CIBLE /mirror/part_root/var/
 721  
 722  chroot /mirror/part_root update-grub 
 723  # chroot /mirror/part_root/ /bin/bash
 724  # update-grub
 725  # /usr/sbin/grub-install --recheck --no-floppy $DISK2
 726  
 727  
 728  
 729  
 730  sed "s/hd1/hd0/" -i /mirror/part_root/boot/grub/grub.cfg  
 731  sed "s#$PARTROOT_CIBLE#$PARTROOT#" -i /mirror/part_root/boot/grub/grub.cfg
 732  
 733  echo "--------------- modification du fstab --------------------------------"
 734  old_uuid_part1=` blkid | grep $DISK1\1 | cut -d" " -f2 | sed s/\"\//g`
 735  old_uuid_part2=` blkid | grep $DISK1\2 | cut -d" " -f2 | sed s/\"\//g`
 736  old_uuid_part3=` blkid | grep $DISK1\3 | cut -d" " -f2 | sed s/\"\//g`
 737  old_uuid_part5=` blkid | grep $DISK1\5 | cut -d" " -f2 | sed s/\"\//g`
 738  old_uuid_part6=` blkid | grep $DISK1\6 | cut -d" " -f2 | sed s/\"\//g`
 739  
 740  new_uuid_part1=` blkid | grep $DISK2\1 | cut -d" " -f2 | sed s/\"\//g`
 741  new_uuid_part2=` blkid | grep $DISK2\2 | cut -d" " -f2 | sed s/\"\//g`
 742  new_uuid_part3=` blkid | grep $DISK2\3 | cut -d" " -f2 | sed s/\"\//g`
 743  new_uuid_part5=` blkid | grep $DISK2\5 | cut -d" " -f2 | sed s/\"\//g`
 744  new_uuid_part6=` blkid | grep $DISK2\6 | cut -d" " -f2 | sed s/\"\//g`
 745  
 746  #echo "------------------partition 1------------------------------------"
 747  #echo $old_uuid_part1
 748  #echo $new_uuid_part1
 749  #echo "------------------partition 2------------------------------------"
 750  #echo $old_uuid_part2
 751  #echo $new_uuid_part2
 752  #echo "------------------partition 3------------------------------------"
 753  #echo $old_uuid_part3
 754  #echo $new_uuid_part3
 755  #echo "------------------partition 5------------------------------------"
 756  #echo $old_uuid_part5
 757  #echo $new_uuid_part5
 758  #echo "------------------partition 6------------------------------------"
 759  #echo $old_uuid_part6
 760  #echo $new_uuid_part6
 761  
 762  sed "s#$old_uuid_part1#$new_uuid_part1#" -i  /mirror/part_root/etc/fstab
 763  sed "s#$old_uuid_part2#$new_uuid_part2#" -i  /mirror/part_root/etc/fstab
 764  sed "s#$old_uuid_part3#$new_uuid_part3#" -i  /mirror/part_root/etc/fstab
 765  sed "s#$old_uuid_part5#$new_uuid_part5#" -i  /mirror/part_root/etc/fstab
 766  sed "s#$old_uuid_part6#$new_uuid_part6#" -i  /mirror/part_root/etc/fstab
 767  
 768  umount /mirror/part_root/var/
 769  umount /mirror/part_root/
 770  cd /mirror/
 771  ./mirror_rsync.sh
 772  echo -e "$COLTXT"
 773  exit 0


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1