[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  #!/bin/bash
   2  
   3  #/usr/share/se3/sbin/miroring_ssh.sh
   4  ##/usr/share/se3/sbin/miroring_mise_en_place.sh
   5  
   6  #
   7  ## $Id: mirroring_ssh.sh 7723 2013-03-18 23:57:26Z keyser $ ##
   8  #
   9  ##### Mise en place du mirroring entre le disk principal et un DEUXIEME DISK #####
  10  # au choix de l'utilisateur
  11  # modestement ecrit par Franck Molle, dernieres modifs 08/2004
  12  
  13  #Script humblement modifié par Stéphane Boireau pour permettre le rsync vers une machine distante.
  14  #Modifs: 04/04/2005
  15  
  16  if [ "$1" = "--help" -o "$1" = "-h" ]
  17  then
  18      echo "Permet de mettre en place un mirroring entre le disque principal et un deuxième disque"
  19      echo "Script interactif"
  20      echo "Usage : aucune option"
  21      exit
  22  fi    
  23  
  24  
  25  #Chemin des scripts:
  26  chemin="."
  27  #Passer par la suite à /usr/share/se3/sbin/
  28  
  29  
  30  
  31  #================================================
  32  #Clé publique du compte root local:
  33  clepublique="/var/remote_adm/.ssh/id_rsa.pub"
  34  #Cette clé sans PASSPHRASE va permettre l'éexécution automatique en crontab
  35  #(i.e. sans intervention humaine pour une saisie de mot de passe) du script de mirroring.
  36  
  37  #INUTILE: On en crée une autre!
  38  #================================================
  39  
  40  
  41  
  42  #Dossier temporaire:
  43  ladate=$(date +"%Y.%m.%d-%H.%M.%S");
  44  tmp="/tmp/tmp.$ladate}"
  45  mkdir -p "$tmp"
  46  
  47  
  48  
  49  #Couleurs
  50  COLTITRE="\033[1;35m"    # Rose
  51  COLPARTIE="\033[1;34m"    # Bleu
  52  
  53  COLTXT="\033[0;37m"    # Gris
  54  COLCHOIX="\033[1;33m"    # Jaune
  55  COLDEFAUT="\033[0;33m"    # Brun-jaune
  56  COLSAISIE="\033[1;32m"    # Vert
  57  
  58  COLCMD="\033[1;37m"    # Blanc
  59  
  60  COLERREUR="\033[1;31m"    # Rouge
  61  COLINFO="\033[0;36m"    # Cyan
  62  
  63  #COLMDP=""
  64  
  65  
  66  
  67  ERREUR()
  68  {
  69      echo -e "$COLERREUR"
  70      echo "ERREUR!"
  71      echo -e "$1"
  72      echo -e "$COLTXT"
  73      read PAUSE
  74      if [ ! -z "$email" ]; then
  75          echo "ERREUR" > "$tmp/erreur.txt"
  76          echo -e "$1" >> "$tmp/erreur.txt"
  77          mail $email -s"[Mise en place Mirroring SSH] ERREUR" < "$tmp/erreur.txt"
  78  
  79          #==============================================
  80          #MODIF temporaire:
  81          cp "$tmp/erreur.txt" /root/erreur_$ladate}.txt
  82          #==============================================
  83  
  84          rm -f "$tmp/erreur.txt"
  85      fi
  86      #A décommenter après la phase de debug:
  87      #rm -fr $tmp
  88      echo -e "$COLTXT"
  89      exit 0
  90  }
  91  
  92  POURSUIVRE()
  93  {
  94      if [ -z "$1" ]; then
  95          QUESTION="Peut-on poursuivre"
  96      else
  97          QUESTION="$1"
  98      fi
  99  
 100      REPONSE=""
 101      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 102      do
 103          echo -e "$COLTXT"
 104          echo -e "$QUESTION? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 105          read REPONSE
 106      done
 107  
 108      if [ "$REPONSE" != "o" ]; then
 109          ERREUR "Abandon!"
 110      fi
 111  }
 112  
 113  
 114  AFFICHHD()
 115  {
 116      echo -e "$COLTXT"
 117      echo "Voici la liste des disques trouvés sur votre machine:"
 118      echo -e "$COLCMD"
 119      TEMOIN=""
 120      if /bin/dmesg | grep hd | grep drive | grep -v driver | grep -v ROM; then
 121          TEMOIN="OK"
 122      fi
 123  
 124      #/bin/dmesg | grep sd | grep drive | grep -v driver | grep -v ROM
 125      if /bin/dmesg | grep sd | grep SCSI | grep -v ROM; then
 126          TEMOIN="OK"
 127      fi
 128  
 129      if [ "$TEMOIN" != "OK" ]; then
 130          echo -e "$COLINFO}Les méthodes précédentes de détection n'ont pas fonctionné."
 131          echo "Deux autres méthodes vont être tentées."
 132          echo "Si elles échouent, il vous faudra connaitre"
 133          echo -e "l'identifiant (hda, hdb,...) du disque pour poursuivre.$COLCMD}"
 134          #Sur les IBM Thinkpad, les commandes précédentes ne donnent rien alors que /dev/hda est bien présent.
 135          #/bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"
 136          #if /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"; then
 137          if /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun > /dev/null; then
 138              /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"
 139              TEMOIN="OK"
 140          fi
 141          #Une alternative sera: ls /dev/hd*
 142      fi
 143  
 144      if [ "$TEMOIN" != "OK" ]; then
 145          echo ""
 146          ls /dev/ | egrep "(hd|sd)" | grep -v "[0-9]" 2>/dev/null |while read A
 147          do
 148              if fdisk -l /dev/$A | grep Blocks > /dev/null; then
 149                  echo $A
 150                  echo "OK" > /tmp/TEMOIN
 151              fi
 152          done
 153          if [ -e "/tmp/TEMOIN" ]; then
 154              TEMOIN=$(cat /tmp/TEMOIN)
 155              rm -f /tmp/TEMOIN
 156              echo -e "$COLINFO"
 157              echo "Un message éventuel indiquant:"
 158              echo -e "$COLERREUR}Disk /dev/XdY doesn't contain a valid partition table"
 159              echo -e "$COLINFO}signifie seulement que le périphérique /dev/XdY ne doit pas être un disque dur."
 160          fi
 161      fi
 162  
 163      if [ "$TEMOIN" != "OK" ]; then
 164          echo -e "$COLCMD"
 165          if ls /dev/hd* | grep "[0-9]" > /dev/null; then
 166              ls /dev/hd* | grep "[0-9]" | sed -e "s!/dev/!!g" | sed -e "s/[0-9]*//g"
 167          else
 168              echo -e "$COLINFO}Le(s) disque(s) dur(s) n'a/ont pas été identifié(s) par mon script.\nCela ne vous empêche pas de poursuivre,\nmais il faut alors connaitre le périphérique...$COLTXT}"
 169          fi
 170      fi
 171  }
 172  
 173  
 174  
 175  clear
 176  echo -e "$COLTITRE}"
 177  echo "******************************"
 178  echo "* Mise en place du mirroring *"
 179  echo "******************************"
 180  
 181  echo -e "$COLINFO}"
 182  echo "****************************************************************"
 183  echo "* Ce script va mettre en place un mirroring a l'aide de rsync  *"
 184  echo "* entre HDA / SDA / etc ... et un 2eme disque de votre choix.  *"
 185  #==========================
 186  echo "* Le 2è disque dur pourra se trouver sur une machine distante. *"
 187  #==========================
 188  echo "*                                                              *"
 189  echo -e "*$COLERREUR}           /!\ ATTENTION /!\   A CE QUE VOUS FAITES    $COLINFO}       *"
 190  echo -e "*  $COLERREUR}     SI LE DEUXIEME DISQUE CONTIENT DEJA DES DONNEES  $COLINFO}      *"
 191  echo "*                                                              *"
 192  echo "*   Suggestions, corrections,... : franck.molle@ac-rouen.fr    *"
 193  echo "*                                                              *"
 194  echo "*             Appuyez sur ENTREE pour continuer                *"
 195  echo "****************************************************************"
 196  echo -e "$COLTXT}"
 197  read OK
 198  
 199  echo -e "$COLPARTIE"
 200  echo "*********************"
 201  echo "* Présence de rsync *"
 202  echo "*********************"
 203  
 204  # Détection de rsync et installation si nécessaire:
 205  if [ -e /usr/bin/rsync ]; then
 206          echo -e "$COLTXT}"
 207      #echo ""
 208          echo "Rsync est déjà installé."
 209  else
 210          REPONSE=""
 211          while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 212          do
 213          echo -e "$COLTXT}"
 214                  echo "Rsync est nécessaire au mirroring, mais ne semble pas installé."
 215                  echo -e "Voulez-vous l'installer maintenant?"
 216                  echo "(une connexion à internet est nécessaire)"
 217                  echo -e "Réponse: ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 218                  read REPONSE
 219  
 220          if [ -z "$REPONSE" ]; then
 221              REPONSE="o"
 222          fi
 223      done
 224          if [ "$REPONSE" = "o" ]; then
 225              echo -e "$COLTXT}"
 226                  echo "Installation de rsync lancée:"
 227              echo -e "$COLCMD}"
 228                  apt-get update
 229                  apt-get install rsync
 230          else
 231              echo -e "$COLTXT}"
 232                  echo "Pas d'installation de rsync."
 233          fi
 234  fi
 235  
 236  echo -e "$COLPARTIE"
 237  echo "******************************"
 238  echo "* Choix du disque dur source *"
 239  echo "******************************"
 240  
 241  AFFICHHD
 242  
 243  # Choix du premier disque (le disque source):
 244  while [ "$DISK1OK" != "o" ]
 245  do
 246          echo -e "$COLTXT}"
 247      echo -e "Quel est votre premier disque? [$COLDEFAUT}hda$COLTXT}] $COLSAISIE}\c"
 248      read DISK1
 249      if [ -z "$DISK1" ]; then
 250          DISK1="hda"
 251      fi
 252  
 253      DISK1OK=""
 254      while [ "$DISK1OK" != "o" -a "$DISK1OK" != "n" ]
 255      do
 256          if [ ! -z "$(fdisk -l /dev/$DISK1)" ]; then
 257              echo -e "$COLTXT}"
 258              echo -e "Votre premier disque est$COLINFO} $DISK1 $COLTXT}"
 259              echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 260              read DISK1OK
 261              if [ -z "$DISK1OK" ]; then
 262                  DISK1OK="o"
 263              fi
 264          else
 265              echo -e "$COLERREUR}"
 266              echo "Aucune partition n'a été trouvée sur $DISK1"
 267              echo "Vous avez dû vous tromper de disque."
 268              echo ""
 269              echo -e "$COLTXT}Tapez ENTREE pour corriger."
 270              read PAUSE
 271              DISK1OK="n"
 272          fi
 273      done
 274  done
 275  
 276  
 277  #Sauvegarde de la table des partitions du premier disque:
 278  echo -e "$COLCMD}"
 279  sfdisk -d /dev/$DISK1 > /tmp/part
 280  
 281  #Détection des partitions du disque source:
 282  PARTSWAP=`fdisk -l /dev/$DISK1 | grep swap | sed -e "s/ .*//" | sed -e "s/\/dev\///" `
 283  PARTROOT=`df | grep "/\$" | sed -e "s/ .*//" | sed -e "s/\/dev\///" `
 284  PARTHOME=`df | grep "/home" | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 285  PARTVARSE3=`df | grep "/var/se3" | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 286  
 287  TSTVAR=`df | grep "/var"| grep -v /var/se3`
 288  
 289  echo -e "$COLTXT}"
 290  echo "Le script a détecté les partitions suivantes:"
 291  echo ""
 292  echo -e "$COLTXT}Partition SWAP :\t$COLINFO} $PARTSWAP"
 293  echo -e "$COLTXT}Partition Racine :\t$COLINFO} $PARTROOT"
 294  if [ ! -z "$TSTVAR" ]; then
 295      echo -e "$COLCMD}\c"
 296      PARTVAR=`df | grep "/var"| grep -v /var/se3 | sed -e "s/ .*//" | sed -e "s/\/dev\///"`
 297      echo -e "$COLTXT}Partition /VAR :\t$COLINFO} $PARTVAR"
 298  else
 299      # echo -e "Pas de Partition /var de detectée "
 300      PARTVAR="aucune"
 301  fi
 302  echo -e "$COLTXT}Partition /HOME :\t$COLINFO} $PARTHOME"
 303  echo -e "$COLTXT}Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3"
 304  
 305  DETECTOK=""
 306  while [ "$DETECTOK" != "o" -a "$DETECTOK" != "n" ]
 307  do
 308      echo -e "$COLTXT}"
 309      echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 310      read DETECTOK
 311      if [ -z "$DETECTOK" ]; then
 312          DETECTOK="o"
 313      fi
 314  done
 315  
 316  if [ "$DETECTOK" = "n" ]; then
 317  
 318          while [ "$PARTOK" != "o" ]
 319      do
 320          #Saisie des partitions:
 321          echo -e "$COLTXT"
 322                  echo -e "Quelle est votre partition SWAP ? [$COLDEFAUT}hda1$COLTXT}] $COLSAISIE}\c"
 323                  read  PARTSWAP
 324                  if [ -z "$PARTSWAP" ]; then
 325                          PARTSWAP=hda1
 326                  fi
 327  
 328          echo -e "$COLTXT"
 329                  echo -e "Quelle est votre partition RACINE ? [$COLDEFAUT}hda2$COLTXT}] $COLSAISIE}\c"
 330                  read  PARTROOT
 331                  if [ -z "$PARTROOT" ]; then
 332                          PARTROOT=hda2
 333                  fi
 334  
 335          echo -e "$COLTXT"
 336          echo -e "Quelle est votre partition /VAR ? [$COLDEFAUT}aucune$COLTXT}] $COLSAISIE}\c"
 337                  read  PARTVAR
 338                  if [ -z "$PARTVAR" ]; then
 339                          PARTVAR=aucune
 340                  fi
 341  
 342          echo -e "$COLTXT"
 343                  echo -e "Quelle est votre partition HOME ? [$COLDEFAUT}hda3$COLTXT}] $COLSAISIE}\c"
 344                  read  PARTHOME
 345                  if [ -z "$PARTHOME" ]; then
 346                          PARTHOME=hda3
 347                  fi
 348  
 349          echo -e "$COLTXT"
 350                  echo -e "Quelle est votre partition VAR/SE3 ? [$COLDEFAUT}hda4$COLTXT}] $COLSAISIE}\c"
 351                  read  PARTVARSE3
 352                  if [ -z "$PARTVARSE3" ]; then
 353                          PARTVARSE3=hda4
 354                  fi
 355  
 356          #Récapitulatif des partitions:
 357          echo -e "$COLTXT"
 358          echo "Voici la liste de vos partitions:"
 359          echo -e "Partition SWAP :\t$COLINFO} $PARTSWAP $COLTXT}"
 360          echo -e "Partition Racine :\t$COLINFO} $PARTROOT $COLTXT}"
 361          if [ "$PARTVAR" != "aucune" ]; then
 362              echo -e "Partition /VAR :\t$COLINFO} $PARTVAR $COLTXT}"
 363          fi
 364          echo -e "Partition /HOME :\t$COLINFO} $PARTHOME $COLTXT}"
 365          echo -e "Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3 $COLTXT}"
 366  
 367          #Confirmation ou correction:
 368          PARTOK=""
 369                  while [ "$PARTOK" != "o" -a "$PARTOK" != "n" ]
 370                  do
 371              echo -e "$COLTXT"
 372              echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 373                          read PARTOK
 374  
 375              if [ -z "$PARTOK" ]; then
 376                  PARTOK="o"
 377              fi
 378                  done
 379          done
 380  fi
 381  
 382  echo -e "$COLPARTIE"
 383  echo "***********************************"
 384  echo "* Choix du disque dur destination *"
 385  echo "***********************************"
 386  
 387  echo -e "$COLINFO"
 388  echo "Le disque dur peut être:"
 389  echo "     - un disque dur local (dans le serveur)"
 390  echo "     - un disque dur distant (dans une autre machine)"
 391  echo ""
 392  echo "Dans le cas où vous optez pour un disque dur distant,"
 393  echo "voici quelques indications:"
 394  echo "     - La machine distante doit disposer de deux disques durs:"
 395  echo "          . Un pour le système distant."
 396  echo "          . Un autre pour accueillir le miroir du disque source."
 397  echo ""
 398  echo "     - Un mécanisme d'authentification automatique par clé publique/clé privée"
 399  echo "       va être mis en place pour que les scripts sur ce serveur puissent accéder"
 400  echo "       en SSH à la machine distante sans saisie de mot de passe."
 401  echo "       La sécurité de la machine distante dépend donc de la machine locale."
 402  echo "       Si un intrus obtient l'accès root sur la machine locale, il aura"
 403  echo "       automatiquement l'accès root sur la machine distante."
 404  echo "       Songez-y si la machine distante à d'autres fonctions que la fonction"
 405  echo "       de sauvegarde."
 406  
 407  #NOTE: On pourrait n'utiliser qu'un seul disque dur sur la machine distante.
 408  #      Il faudrait alors booter sur une distribution live disposant d'un serveur SSH
 409  #      sur la machine distante.
 410  #      L'inconvénient, c'est qu'en cas de reboot sur la machine distante (coupure de courant, maintenance,...),
 411  #      il faut refaire la mise en place de l'authentification automatique.
 412  
 413  DDLOCAL=""
 414  while [ "$DDLOCAL" != "1" -a "$DDLOCAL" != "2" ]
 415  do
 416      echo -e "$COLTXT"
 417      echo "Souhaitez-vous effectuer un miroir:"
 418      echo -e "     ($COLCHOIX}1$COLTXT}) local,"
 419      echo -e "     ($COLCHOIX}2$COLTXT}) distant."
 420      echo -e "Réponse: [$COLDEFAUT}1$COLTXT}] $COLSAISIE}\c"
 421      read DDLOCAL
 422  
 423      if [ -z "$DDLOCAL" ]; then
 424          DDLOCAL="1"
 425      fi
 426  done
 427  
 428  
 429  #===================================================================
 430  echo -e "$COLCMD"
 431  echo '#!/bin/bash' > $tmp/traitement_disque_destination.sh
 432  #Faut-il effectuer des initialisations de variables?
 433  echo "DDLOCAL=$DDLOCAL" >> $tmp/traitement_disque_destination.sh
 434  echo "DISK1=$DISK1" >> $tmp/traitement_disque_destination.sh
 435  echo "PARTSWAP=$PARTSWAP" >> $tmp/traitement_disque_destination.sh
 436  echo "PARTROOT=$PARTROOT" >> $tmp/traitement_disque_destination.sh
 437  echo "PARTHOME=$PARTHOME" >> $tmp/traitement_disque_destination.sh
 438  echo "PARTVARSE3=$PARTVARSE3" >> $tmp/traitement_disque_destination.sh
 439  echo "PARTVAR=$PARTVAR" >> $tmp/traitement_disque_destination.sh
 440  
 441  #cat $chemin/traitement_disque_destination.sh | sed -e 's!#!/bin/bash!!' >> $tmp/traitement_disque_destination.sh
 442  
 443  echo '#Couleurs
 444  COLTITRE="\033[1;35m"    # Rose
 445  COLPARTIE="\033[1;34m"    # Bleu
 446  
 447  COLTXT="\033[0;37m"    # Gris
 448  COLCHOIX="\033[1;33m"    # Jaune
 449  COLDEFAUT="\033[0;33m"    # Brun-jaune
 450  COLSAISIE="\033[1;32m"    # Vert
 451  
 452  COLCMD="\033[1;37m"    # Blanc
 453  
 454  COLERREUR="\033[1;31m"    # Rouge
 455  COLINFO="\033[0;36m"    # Cyan
 456  
 457  #Dossier temporaire:
 458  ladate=$(date +"%Y.%m.%d-%H.%M.%S");
 459  tmp="/tmp/tmp.$ladate}"
 460  mkdir -p "$tmp"
 461  
 462  ERREUR()
 463  {
 464      echo -e "$COLERREUR"
 465      echo "ERREUR!"
 466      echo -e "$1"
 467      echo -e "$COLTXT"
 468      read PAUSE
 469      if [ ! -z "$email" ]; then
 470          echo "ERREUR" > "$tmp/erreur.txt"
 471          echo -e "$1" >> "$tmp/erreur.txt"
 472          mail $email -s"[Mise en place Mirroring SSH] ERREUR" < "$tmp/erreur.txt"
 473          rm -f "$tmp/erreur.txt"
 474      fi
 475      #A décommenter après la phase de debug:
 476      #rm -fr $tmp
 477      echo -e "$COLTXT"
 478      exit 0
 479  }
 480  
 481  POURSUIVRE()
 482  {
 483      if [ -z "$1" ]; then
 484          QUESTION="Peut-on poursuivre"
 485      else
 486          QUESTION="$1"
 487      fi
 488  
 489      REPONSE=""
 490      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 491      do
 492          echo -e "$COLTXT"
 493          echo -e "$QUESTION? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 494          read REPONSE
 495      done
 496  
 497      if [ "$REPONSE" != "o" ]; then
 498          ERREUR "Abandon!"
 499      fi
 500  }
 501  
 502  AFFICHHD()
 503  {
 504      echo -e "$COLTXT"
 505      echo "Voici la liste des disques trouvés sur votre machine:"
 506      echo -e "$COLCMD"
 507      TEMOIN=""
 508      if /bin/dmesg | grep hd | grep drive | grep -v driver | grep -v ROM; then
 509          TEMOIN="OK"
 510      fi
 511  
 512      #/bin/dmesg | grep sd | grep drive | grep -v driver | grep -v ROM
 513      if /bin/dmesg | grep sd | grep SCSI | grep -v ROM; then
 514          TEMOIN="OK"
 515      fi
 516  
 517      if [ "$TEMOIN" != "OK" ]; then
 518          echo -e "$COLINFO}Les méthodes précédentes de détection n ont pas fonctionné."
 519          echo "Deux autres méthodes vont être tentées."
 520          echo "Si elles échouent, il vous faudra connaitre"
 521          echo -e "l identifiant (hda, hdb,...) du disque pour poursuivre.$COLCMD}"
 522          #Sur les IBM Thinkpad, les commandes précédentes ne donnent rien alors que /dev/hda est bien présent.
 523          #/bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"
 524          #if /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"; then
 525          if /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun > /dev/null; then
 526              /bin/dmesg | grep dev | grep host | grep bus | grep target | grep lun | cut -d ":" -f 1 | sed -e "s/ //g" | sed -e "s!ide/host0/bus0/target0/lun0!hda!g" | sed -e "s!ide/host0/bus0/target1/lun0!hdb!g" | sed -e "s!ide/host0/bus1/target0/lun0!hdc!g" | sed -e "s!ide/host0/bus1/target1/lun0!hdd!g"
 527              TEMOIN="OK"
 528          fi
 529          #Une alternative sera: ls /dev/hd*
 530      fi
 531  
 532      if [ "$TEMOIN" != "OK" ]; then
 533          echo ""
 534          ls /dev/ | egrep "(hd|sd)" | grep -v "[0-9]" 2>/dev/null |while read A
 535          do
 536              if /sbin/fdisk -l /dev/$A | grep Blocks > /dev/null; then
 537                  echo $A
 538                  echo "OK" > /tmp/TEMOIN
 539              fi
 540          done
 541          if [ -e "/tmp/TEMOIN" ]; then
 542              TEMOIN=$(cat /tmp/TEMOIN)
 543              rm -f /tmp/TEMOIN
 544              echo -e "$COLINFO"
 545              echo "Un message éventuel indiquant:"
 546              echo -e "$COLERREUR}Disk /dev/XdY doesn t contain a valid partition table"
 547              echo -e "$COLINFO}signifie seulement que le périphérique /dev/XdY ne doit pas être un disque dur."
 548          fi
 549      fi
 550  
 551      if [ "$TEMOIN" != "OK" ]; then
 552          echo -e "$COLCMD"
 553          if ls /dev/hd* | grep "[0-9]" > /dev/null; then
 554              ls /dev/hd* | grep "[0-9]" | sed -e "s!/dev/!!g" | sed -e "s/[0-9]*//g"
 555          else
 556              echo -e "$COLINFO}Le(s) disque(s) dur(s) n a/ont pas été identifié(s) par mon script.\nCela ne vous empêche pas de poursuivre,\nmais il faut alors connaitre le périphérique...$COLTXT}"
 557          fi
 558      fi
 559  }
 560  
 561  echo -e "$COLPARTIE"
 562  echo "********************************************"
 563  echo "* Opérations sur le disque dur destination *"
 564  echo "********************************************"
 565  
 566  if [ "$DDLOCAL" = "1" ]; then
 567      DOSSMIRROR="/mirror"
 568  else
 569      DOSSMIRROR="/tmp/mirror"
 570  fi
 571  
 572  AFFICHHD
 573  
 574  DISK2OK="n"
 575  while [ "$DISK2OK" != "o" ]
 576  do
 577      echo -e "$COLTXT"
 578      echo -e "Quel est votre deuxième disque? [$COLDEFAUT}hdb$COLTXT}] $COLSAISIE}\c"
 579      read  DISK2
 580      if [ -z "$DISK2" ]; then
 581          DISK2="hdb"
 582      fi
 583  
 584      DISK2OK=""
 585          while [ "$DISK2OK" != "o" -a "$DISK2OK" != "n" ]
 586          do
 587          echo -e "$COLTXT"
 588          echo -e "Votre deuxième disque est$COLINFO} $DISK2 $COLTXT}"
 589          echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 590          read DISK2OK
 591          if [ -z "$DISK2OK" ]; then
 592              DISK2OK="o"
 593          fi
 594          done
 595  done
 596  
 597  echo -e "$COLTXT"
 598  echo "Test de la validité de votre choix."
 599  if [ "$DDLOCAL" = "1" ]; then
 600      if [ "$DISK2" = "$DISK1"  ]; then
 601          echo -e "$COLERREUR}Erreur! Vous avez saisi la même valeur pour le 1er et le 2ème disque."
 602          echo -e "$COLERREUR}Le script ne peut mettre en place un mirroring sur le meme disque."
 603          echo -e "$COLTXT"
 604          exit 1
 605      fi
 606  else
 607      #Arranger un test pour ne pas écraser le disque dur courant...
 608      if mount | grep "/dev/$DISK2 " > /dev/null; then
 609          echo -e "$COLERREUR}Erreur! Vous avez choisi un disque  actuellement monté."
 610          echo -e "$COLERREUR}Le disque dur /dev/$DISK2 sera intégralement repartitionné et reformaté."
 611          echo -e "$COLERREUR}Le script ne peut mettre en place un mirroring sur le disque de l OS distant."
 612          echo -e "$COLTXT"
 613          exit 1
 614      fi
 615  fi
 616  
 617  #NOTE: A revoir: On pourrait envisager un mirroring intégral
 618  #      juste à des fins de sauvegarde sur le disque dur de l OS distant...
 619  #      Il ne serait alors pas possible/commode de remplacer le disque source en cas de pépin,
 620  #      mais la sauvegarde serait tout de même assurée.
 621  #      REVOIR les tests effectués pour permettre une telle sauvegarde.
 622  
 623  echo -e "$COLCMD"
 624  #DISK2PARTS=`sfdisk -l /dev/$DISK2 2>/dev/null`
 625  DISK2PARTS=`/sbin/sfdisk -l /dev/$DISK2 2>/dev/null`
 626  
 627  if [ -z "$DISK2PARTS" ]; then
 628  #if ! sfdisk -l /dev/$DISK2 2>/dev/null > /dev/null; then
 629          echo -e "$COLERREUR}Erreur! Aucun disque $DISK2 détecté."
 630          echo -e "$COLERREUR}Vous avez saisi une valeur erronée pour le 2ème disque."
 631          exit 1
 632  fi
 633  
 634  #recuperation des noms de partitions du disque 2
 635  PARTSWAP_CIBLE=`echo $PARTSWAP | sed -e "s/$DISK1/$DISK2/"`
 636  PARTROOT_CIBLE=`echo $PARTROOT | sed -e "s/$DISK1/$DISK2/"`
 637  PARTHOME_CIBLE=`echo $PARTHOME | sed -e "s/$DISK1/$DISK2/"`
 638  PARTVARSE3_CIBLE=`echo $PARTVARSE3 | sed -e "s/$DISK1/$DISK2/"`
 639  
 640  echo -e "$COLTXT"
 641  echo -e "Voici la liste des (futures) partitions de$COLINFO} $DISK2 $COLTXT}"
 642  echo -e "Partition SWAP :\t$COLINFO} $PARTSWAP_CIBLE $COLTXT}"
 643  echo -e "Partition Racine :\t$COLINFO} $PARTROOT_CIBLE $COLTXT}"
 644  if [ "$PARTVAR" != "aucune" ]; then
 645          PARTVAR_CIBLE=`echo $PARTVAR | sed -e "s/$DISK1/$DISK2/"`
 646          echo -e "Partition /VAR :\t$COLINFO} $PARTVAR_CIBLE $COLTXT}"
 647  fi
 648  echo -e "Partition /HOME :\t$COLINFO} $PARTHOME_CIBLE $COLTXT}"
 649  echo -e "Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3_CIBLE $COLTXT}"
 650  
 651  REPONSE=""
 652  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 653  do
 654      echo -e "$COLTXT"
 655      echo -e "Voulez-vous poursuivre l installation ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 656      read REPONSE
 657      if [ -z "$REPONSE" ]; then
 658          REPONSE="o"
 659      fi
 660  done
 661  if [ "$REPONSE" = "n" ]; then
 662      echo -e "$COLERREUR}Action abandonnée, rien n a été modifié.$COLTXT}"
 663      exit 0
 664  fi
 665  
 666  
 667  
 668  
 669  echo -e "$COLPARTIE"
 670  echo "**********************************"
 671  echo "* Création des points de montage *"
 672  echo "*  pour les partitions miroirs   *"
 673  echo "**********************************"
 674  
 675  echo -e "$COLTXT"
 676  #Création des repertoires de travail si besoin
 677  if  [ -e $DOSSMIRROR ]; then
 678      echo -e "Le répertoire $DOSSMIRROR existe déjà...."
 679  else
 680      mkdir -p $DOSSMIRROR
 681  fi
 682  
 683  if  [ -e $DOSSMIRROR/part_root ]; then
 684      echo -e "Le répertoire $DOSSMIRROR/part_root existe déjà...."
 685  else
 686      mkdir $DOSSMIRROR/part_root
 687  fi
 688  
 689  if [ "$PARTVAR" != "aucune" ]; then
 690          if  [ -e $DOSSMIRROR/part_var ]; then
 691              echo -e "Le répertoire $DOSSMIRROR/part_var existe déjà...."
 692          else
 693              mkdir $DOSSMIRROR/part_var
 694          fi
 695  fi
 696  
 697  if  [ -e $DOSSMIRROR/part_home ]; then
 698      echo -e "Le répertoire $DOSSMIRROR/part_home existe déjà...."
 699  else
 700      mkdir $DOSSMIRROR/part_home
 701  fi
 702  
 703  if  [ -e $DOSSMIRROR/part_varse3 ]; then
 704      echo -e "Le répertoire $DOSSMIRROR/part_varse3 existe déjà...."
 705  else
 706      mkdir $DOSSMIRROR/part_varse3
 707  fi
 708  
 709  echo "Terminé."
 710  
 711  
 712  
 713  
 714  
 715  echo -e "$COLPARTIE"
 716  echo "***************************"
 717  echo "* Création des partitions *"
 718  echo "***************************"
 719  
 720  # Création des partitions du 2eme disque
 721  REPONSE=""
 722  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 723  do
 724          echo -e "$COLTXT"
 725          echo -e "Voulez-vous créer les partitions et formater le disque $COLINFO}$DISK2 $COLTXT}? ($COLCHOIX}o/n$COLTXT)"
 726          echo -e "$COLERREUR}Attention le contenu de $DISK2 sera effacé.$COLTXT}"
 727      echo -e "Réponse: $COLSAISIE}\c"
 728          read REPONSE
 729  done
 730  
 731  echo ""
 732  if [ "$REPONSE" = "o" ]; then
 733          echo -e "$COLTXT"
 734          echo "Création des partitions et des systèmes de fichiers:"
 735          echo -e "$COLCMD"
 736          #sfdisk /dev/$DISK2 < /tmp/part
 737          /sbin/sfdisk /dev/$DISK2 < /tmp/part
 738          if [ $? != 0 ]; then
 739          echo ""
 740                  echo -e "$COLERREUR}Erreur lors de la création des partitions de $DISK2 "
 741                  echo -e "Le script ne peut se poursuivre normalement."
 742          echo ""
 743                  echo -e "$COLINFO}Vos disques ne sont peut-être pas strictement identiques."
 744                  echo -e "Vous pouvez exécuter cfdisk et partitionner manuellement de la même façon que le 1er disque."
 745  
 746          echo -e "$COLTXT"
 747                  echo -e "Pour rappel, voici l ordre dans lequel elles devront apparaître:"
 748                  echo -e "Partition SWAP :\t$COLINFO} $PARTSWAP_CIBLE $COLTXT}"
 749                  echo -e "Partition Racine :\t$COLINFO} $PARTROOT_CIBLE $COLTXT}"
 750                  if [ "$PARTVAR" != "aucune" ]; then
 751                      echo -e "Partition /VAR :\t$COLINFO} $PARTVAR_CIBLE $COLTXT}"
 752                  fi
 753                  echo -e "Partition /HOME :\t$COLINFO} $PARTHOME_CIBLE $COLTXT}"
 754                  echo -e "Partition /VAR/SE3 :\t$COLINFO} $PARTVARSE3_CIBLE $COLTXT}"
 755                  REPONSE=""
 756                  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
 757                  do
 758                          echo -e "$COLTXT"
 759                          echo -e "Voulez-vous créer les partitions à la main maintenant? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
 760                          read REPONSE
 761                  done
 762                  if [ "$REPONSE" = "n" ]; then
 763                          echo -e "$COLERREUR}Opération annulée, rien n a été effectué !!! $COLTXT}"
 764                          exit 1
 765                  fi
 766                  while [ "$REPONSE" != "1" -a "$REPONSE" != "2" ]
 767                  do
 768                          echo -e "$COLTXT"
 769                          echo -e "Voulez-vous lancer:"
 770              echo -e "   ($COLCHOIX}1$COLTXT}) cfdisk"
 771              echo -e "       (j ai eu des problèmes avec le lancement de cfdisk en SSH)"
 772              echo -e "   ($COLCHOIX}2$COLTXT}) fdisk"
 773              echo -e "Choix: $COLSAISIE\c"
 774                          read REPONSE
 775                  done
 776          echo -e "$COLCMD"
 777          if [ "$REPONSE" = "1" ]; then
 778                      /sbin/cfdisk /dev/$DISK2
 779          else
 780                      /sbin/fdisk /dev/$DISK2
 781          fi
 782          fi
 783  
 784      echo -e "$COLINFO"
 785      echo "Ne pas s affoler pour un message indiquant:"
 786      echo -e "$COLERREUR}sfdisk: ERROR: sector 0 does not have an msdos signature$COLINFO}"
 787      echo "lors du partitionnement du disque distant."
 788      echo "Cela survient notamment lorsque le disque dur n était pas encore partitionné."
 789      echo "C est sans conséquence pour la suite."
 790  
 791      POURSUIVRE
 792  
 793      echo -e "$COLTXT"
 794      echo "Création des systèmes de fichiers sur les partitions créées:"
 795      sleep 1
 796      if [ "$PARTVAR" != "aucune" ]; then
 797          #echo -e "$COLTXT"
 798          #echo -e "Partition /VAR :\t${COLINFO} $PARTVAR ${BLANC}"
 799          echo -e "$COLCMD"
 800          /sbin/mkswap /dev/$PARTSWAP_CIBLE  && /sbin/mke2fs -j /dev/$PARTROOT_CIBLE && /sbin/mke2fs -j /dev/$PARTVAR_CIBLE && /sbin/mkfs.xfs -f /dev/$PARTHOME_CIBLE && /sbin/mkfs.xfs -f /dev/$PARTVARSE3_CIBLE
 801      else
 802          echo -e "$COLCMD"
 803          /sbin/mkswap /dev/$PARTSWAP_CIBLE  && /sbin/mke2fs -j /dev/$PARTROOT_CIBLE && /sbin/mkfs.xfs -f /dev/$PARTHOME_CIBLE && /sbin/mkfs.xfs -f /dev/$PARTVARSE3_CIBLE
 804      fi
 805  
 806  
 807          if [ $? != 0 ]; then
 808                  echo -e "$COLERREUR}Erreur lors du formatage des partitions de $DISK2 "
 809                  echo -e "Le script ne peut se poursuivre$BLANC}"
 810                  exit 1
 811          fi
 812  
 813      #Renseignement d un fichier pour permettre la récupération des infos par le script mirroring_ssh.sh
 814      echo "DISK2=$DISK2
 815  PARTSWAP_CIBLE=$PARTSWAP_CIBLE
 816  PARTROOT_CIBLE=$PARTROOT_CIBLE
 817  PARTHOME_CIBLE=$PARTHOME_CIBLE
 818  PARTVARSE3_CIBLE=$PARTVARSE3_CIBLE
 819  PARTVAR_CIBLE=$PARTVAR_CIBLE" > $DOSSMIRROR/liste_infos_disque2.txt
 820  
 821      echo -e "$COLTITRE"
 822      echo "Partitionnement et création des systèmes de fichiers terminés."
 823  
 824      #sleep 1
 825  
 826      POURSUIVRE
 827  
 828      clear
 829  
 830  fi
 831  
 832  exit 0
 833  ' >> $tmp/traitement_disque_destination.sh
 834  
 835  chmod +x $tmp/traitement_disque_destination.sh
 836  #===================================================================
 837  
 838  
 839  
 840  if [ "$DDLOCAL" = "1" ]; then
 841      echo -e "$COLCMD"
 842      #****************************************************************
 843      #****************************************************************
 844      #A REVOIR
 845      #Il va falloir regénérer un $tmp/traitement_disque_destination.sh
 846      #avec les variables $DISK1, $PARTSWAP,...
 847      #
 848      #A TESTER:
 849      #Peut-être que le problème ne se pose que lors d'une copie/exécution à travers SSH...?
 850      #****************************************************************
 851      #****************************************************************
 852  
 853  
 854      #$chemin/traitement_disque_destination.sh
 855  
 856      $tmp/traitement_disque_destination.sh
 857  else
 858      PARAMDISTOK=""
 859      while [ "$PARAMDISTOK" != "o" ]
 860      do
 861          echo -e "$COLTXT"
 862          echo "Vous allez devoir fournir quelques renseignements concernant"
 863          echo "la machine distante."
 864  
 865          REPIPDISTOK=""
 866          while [ "$REPIPDISTOK" != "o" ]
 867          do
 868              echo -e "$COLTXT"
 869              echo -e "IP de la machine distante: $COLSAISIE}\c"
 870              read IPDISTANT
 871              #On peut aussi mettre un nom DNS.
 872  
 873              echo -e "$COLINFO"
 874              echo "Test..."
 875              echo -e "$COLCMD\c"
 876              if ping -c1 $IPDISTANT | grep "1 packets received" > /dev/null; then
 877                  echo -e "$COLINFO}La machine $IPDISTANT a répondu au ping.$COLTXT}"
 878                  REPIPDISTOK="o"
 879              else
 880                  echo -e "$COLERREUR}La machine $IPDISTANT n'a pas répondu au ping.$COLTXT}"
 881  
 882                  REPPOURSUIVRE=""
 883                  while [ "$REPPOURSUIVRE" != "1" -a "$REPPOURSUIVRE" != "2" -a "$REPPOURSUIVRE" != "3" ]
 884                  do
 885                      echo -e "$COLTXT"
 886                      echo "Souhaitez-vous:"
 887                      echo -e "     ($COLCHOIX}1$COLTXT}) poursuivre néanmoins"
 888                      echo "         (s'il est normal que la machine ne réponde pas au ping),"
 889                      echo -e "     ($COLCHOIX}2$COLTXT}) corriger,"
 890                      echo -e "     ($COLCHOIX}3$COLTXT}) ou abandonner?"
 891                      echo -e "Réponse: $COLSAISIE}\c"
 892                      read REPPOURSUIVRE
 893                  done
 894  
 895                  if [ "$REPPOURSUIVRE" = "1" ]; then
 896                      REPIPDISTOK="o"
 897                  fi
 898  
 899                  if [ "$REPPOURSUIVRE" = "3" ]; then
 900                      ERREUR 'Abandon!'
 901                  fi
 902              fi
 903          done
 904  
 905          #AI-JE VRAIMENT BESOIN DE CE MOT DE PASSE PAR LA SUITE???
 906          #echo -e "$COLINFO"
 907          #echo "Pour la saisie du mot de passe, il ne va rien s'afficher (sécurité),"
 908          #echo "mais ne vous inquiétez pas pour autant pour le fonctionnement de"
 909          #echo "votre clavier et de vos doigts carrés;o)."
 910          #echo -e "$COLTXT"
 911          #echo -e "Mot de passe root distant: ${COLMDP}\c"
 912          #stty -echo
 913          #read MDPDISTANT
 914          #stty echo
 915          echo ""
 916  
 917          REPDISTOK=""
 918          while [ "$REPDISTOK" != "o" -a "$REPDISTOK" != "n" ]
 919          do
 920              echo -e "$COLINFO"
 921              echo "Vous avez choisi pour le mirroring distant les paramètres suivants:"
 922              echo -e "     - IP:$COLINFO $IPDISTANT $COLTXT"
 923              echo -e "$COLTXT"
 924              echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
 925              read REPDISTOK
 926  
 927              if [ -z "$REPDISTOK" ]; then
 928                  REPDISTOK="o"
 929              fi
 930          done
 931  
 932          if [ "$REPDISTOK" = "o" ]; then
 933              PARAMDISTOK="o"
 934          else
 935              REPDISTOK=""
 936              while [ "$REPDISTOK" != "o" -a "$REPDISTOK" != "n" ]
 937              do
 938                  echo -e "$COLTXT"
 939                  echo -e "Souhaitez-vous corriger ($COLCHOIX}1$COLTXT}) ou abandonner ($COLCHOIX}2$COLTXT})? $COLSAISIE}\c"
 940                  read REPDISTOK
 941              done
 942  
 943              if [ "$REPDISTOK" = "2" ]; then
 944                  ERREUR "Abandon"
 945              fi
 946          fi
 947      done
 948  
 949      echo -e "$COLINFO"
 950      echo "NOTE: Pour effectuer le mirroring vers une distribution Live Digloo,"
 951      echo "      il est nécessaire de disposer d'une version avec rsync présent,"
 952      echo "      pas seulement dans l'image installée, mais aussi dans la distribution"
 953      echo "      Digloo Live elle-même."
 954      echo "      Il faut de plus modifier un paramètre du fichier /etc/ssh/sshd_config"
 955      echo "      En effet, il n'est pas possible, par défaut, de se connecter en root"
 956      echo "      à une Digloo Live."
 957      echo "      Il faut modifier la ligne 'PermitRootLogin no' en 'PermitRootLogin yes'"
 958      echo "      Il faut ensuite arrêter et redémarrer ssh:"
 959      echo "         /etc/init.d/ssh stop"
 960      echo "         /etc/init.d/ssh start"
 961  
 962  
 963      echo -e "$COLTXT"
 964      #echo "Repère pour la colonne=======================================================80"
 965      echo "Mise en place de la clé publique locale"
 966      echo "dans le fichier authorized_keys distant."
 967      echo "Il va vous être demandé de saisir une PASSPHRASE lors de la génération des"
 968      echo "clés publique/privée."
 969      echo -e "Il est indispensable de laisser $COLERREUR}vide$COLTXT} cette PASSPHRASE."
 970      echo "Et vous allez ensuite devoir saisir le mot de passe root distant:"
 971      echo -e "$COLCMD"
 972      #cat $clepublique | ssh root@$IPDISTANT 'sh -c "mkdir -p /root/.ssh && cat - >>/root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"'
 973  
 974      #if [ ! -e "/root/.ssh/id_dsa" -o ! -e "/root/.ssh/id_dsa.pub" ]; then mkdir -p /root/.ssh && ssh-keygen -t dsa -f ~/.ssh/id_dsa; else echo -e "${COLINFO}Les clés publique/privée existent déjà.${$COLCMD}";fi && cat ~/.ssh/id_dsa.pub | ssh root@$IPDISTANT 'sh -c "mkdir -p /root/.ssh && cat - >>/root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"'
 975      if [ ! -e "/root/.ssh/id_dsa" -o ! -e "/root/.ssh/id_dsa.pub" ]; then
 976          mkdir -p /root/.ssh && ssh-keygen -t dsa -f ~/.ssh/id_dsa
 977      else
 978          echo -e "$COLINFO}Les clés publique/privée existent déjà.$COLCMD}"
 979      fi
 980      cat ~/.ssh/id_dsa.pub | ssh root@$IPDISTANT 'sh -c "mkdir -p /root/.ssh && cat - >>/root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys"'
 981  
 982      if [ "$?" != "0" ]; then
 983          ERREUR "La mise en place de la clé publique locale\ndans le fichier authorized_keys distant a échoué."
 984      fi
 985  
 986  
 987      #====================================================
 988  
 989      #echo '' > $tmp/passwdgroupmin.sh
 990  
 991      echo -e "$COLINFO"
 992      echo "Si la distribution distante est une distribution SE3 installée sur disque dur,"
 993      echo "vous pouvez répondre 'n' à la question suivante."
 994      echo "En revanche, si le système distant est une distribution live (SysRescCD,"
 995      echo "Digloo (live)), il convient, pour éviter des problèmes d'uid/uidNumber"
 996      echo "et gid/gidNumber, de remanier (en RAM) les fichiers suivants:"
 997      echo "   - /etc/passwd"
 998      echo "   - /etc/group"
 999  
1000      REPONSE=""
1001      while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
1002      do
1003          echo -e "$COLTXT"
1004          echo -e "La distribution distante est-elle une distribution live? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}n$COLTXT}] $COLSAISIE\c"
1005          read REPONSE
1006  
1007          if [ "$REPONSE" = "" ]; then
1008              REPONSE="n"
1009          fi
1010      done
1011  
1012      if [ "$REPONSE" = "o" ]; then
1013  
1014          echo '#!/bin/bash
1015  
1016  #Couleurs
1017  COLTITRE="\033[1;35m"    # Rose
1018  COLPARTIE="\033[1;34m"    # Bleu
1019  
1020  COLTXT="\033[0;37m"    # Gris
1021  COLCHOIX="\033[1;33m"    # Jaune
1022  COLDEFAUT="\033[0;33m"    # Brun-jaune
1023  COLSAISIE="\033[1;32m"    # Vert
1024  
1025  COLCMD="\033[1;37m"    # Blanc
1026  
1027  COLERREUR="\033[1;31m"    # Rouge
1028  COLINFO="\033[0;36m"    # Cyan
1029  
1030  #Dossier temporaire:
1031  ladate=$(date +"%Y.%m.%d-%H.%M.%S");
1032  
1033  ERREUR()
1034  {
1035      echo -e "$COLERREUR"
1036      echo "ERREUR!"
1037      echo -e "$1"
1038      echo -e "$COLTXT"
1039      read PAUSE
1040      exit 0
1041  }
1042  
1043  
1044  echo -e "$COLTITRE"
1045  echo "*************************************************"
1046  echo "* Script de vidage de /etc/passwd et /etc/group *"
1047  echo "*************************************************"
1048  
1049  echo -e "$COLINFO"
1050  echo "Pour des besoins de synchronisation RSYNC+SSH entre SE3 SysRescCD live,"
1051  echo "j ai bricolé ce script réduisant au minimum les fichiers /etc/passwd"
1052  echo "et /etc/group"
1053  echo "Cela permet de ne pas avoir des correspondances uid/uidNumber et gid/gidNumber"
1054  echo "différentes entre les deux OS."
1055  
1056  REPONSE=""
1057  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
1058  do
1059      echo -e "$COLTXT"
1060      echo -e "Souhaitez-vous mettre en place ces fichiers réduits? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}n$COLTXT}] $COLSAISIE\c"
1061      read REPONSE
1062  
1063      if [ "$REPONSE" = "" ]; then
1064          REPONSE="n"
1065          ERREUR "Vous avez souhaité abandonner."
1066      fi
1067  done
1068  
1069  if [ "$REPONSE" = "o" ]; then
1070      echo -e "$COLCMD"
1071      cp /etc/passwd /tmp/passwd.$ladate}
1072      cp /etc/group /tmp/group.$ladate}
1073  
1074      REPONSE=""
1075      while [ "$REPONSE" != "1" -a "$REPONSE" != "2" ]
1076      do
1077          echo -e "$COLTXT"
1078          echo "La distribution est-elle:"
1079          echo -e "   ($COLCHOIX}1$COLTXT}) SysRescCD"
1080          echo -e "   ($COLCHOIX}2$COLTXT}) Digloo (live)"
1081          echo -e "Réponse: $COLSAISIE\c"
1082          read REPONSE
1083      done
1084  
1085      case $REPONSE in
1086          1)
1087              echo "root:x:0:0:root:/root:/bin/zsh" > /etc/passwd
1088              echo "sshd:x:22:22:sshd:/var/empty:/dev/null" >> /etc/passwd
1089              echo "root::0:root" > /etc/group
1090              echo "sshd::22:" >> /etc/group
1091          ;;
1092          2)
1093              echo "root:x:0:0:root:/root:/bin/bash" > /etc/passwd
1094              echo "sshd:x:100:65534::/var/run/sshd:/bin/false" >> /etc/passwd
1095              echo "root:x:0:" > /etc/group
1096              #echo "nogroup:x:65534:" >> /etc/group
1097  
1098              #cat /etc/passwd | egrep "(root|sshd)" > /etc/passwd
1099              #cat /etc/group | grep root > /etc/group
1100  
1101              #NOTE: Sur Digloo, il faut effectuer:
1102              # passwd
1103              # ifconfig eth0 192.168.52.8
1104              #Ne pas s inquiéter pour un message: "eth0: duplicate address detected"
1105              # sed -e "s/PermitRootLogin no/PermitRootLogin yes/" /etc/ssh/sshd_config > /tmp/sshd_config.tmp
1106              # cp /tmp/sshd_config.tmp /etc/ssh/sshd_config
1107              # /etc/init.d/ssh stop
1108              # /etc/init.d/ssh start
1109              #Si vous en êtes ici, vous avez déjà dû le faire;o).
1110          ;;
1111      esac
1112  
1113      echo -e "$COLINFO"
1114      echo "Voilà les fichiers mis en place:"
1115      echo -e "$COLTXT"
1116      echo "/etc/passwd:"
1117      echo -e "$COLCMD\c"
1118      cat /etc/passwd
1119  
1120      echo -e "$COLTXT"
1121      echo "/etc/group:"
1122      echo -e "$COLCMD\c"
1123      cat /etc/group
1124  
1125      #echo -e "$COLINFO"
1126      #echo "Une sauvegarde des fichiers initiaux a été effectuée dans /tmp"
1127      #echo ""
1128      #echo "Pour mes bricolages de mirroring, il reste à:"
1129      #echo "   - configurer le réseau: net-setup eth0"
1130      #echo "   - mettre un mot de passe à root (passwd)"
1131      #echo "   - démarrer le serveur SSH: /etc/init.d/sshd start"
1132  fi
1133  
1134  
1135  echo -e "$COLTITRE}"
1136  echo "***********"
1137  echo "* Terminé *"
1138  echo "***********"
1139  echo -e "$COLTXT}"
1140  echo "Appuyez sur ENTREE pour poursuivre."
1141  read PAUSE
1142  ' > $tmp/passwdgroupmin.sh
1143  
1144          echo -e "$COLTXT"
1145          echo "Copie du script passwdgroupmin.sh vers la machine distante."
1146          echo -e "$COLCMD"
1147          ssh root@$IPDISTANT "mkdir -p /root/tmp"
1148          scp $tmp/passwdgroupmin.sh root@$IPDISTANT:/root/tmp/
1149          #scp passwdgroupmin.sh root@$IPDISTANT:/root/tmp/
1150  
1151          echo -e "$COLTXT"
1152          echo "Exécution du script distant passwdgroupmin.sh "
1153          echo -e "$COLCMD"
1154          ssh root@$IPDISTANT "sh /root/tmp/passwdgroupmin.sh "
1155      fi
1156      #====================================================
1157  
1158  
1159      echo -e "$COLTXT"
1160      echo "Copie du script traitement_disque_destination.sh vers la machine distante."
1161      echo -e "$COLCMD"
1162      ssh root@$IPDISTANT "mkdir -p /root/tmp"
1163      scp $tmp/traitement_disque_destination.sh root@$IPDISTANT:/root/tmp/
1164      scp /tmp/part root@$IPDISTANT:/tmp/
1165  
1166      echo -e "$COLTXT"
1167      echo "Exécution du script distant traitement_disque_destination.sh"
1168      echo -e "$COLCMD"
1169      ssh root@$IPDISTANT "sh /root/tmp/traitement_disque_destination.sh"
1170  fi
1171  
1172  
1173  
1174  # Test du succès du script traitement_disque_destination.sh
1175  # Ou plutôt de l'absence de renvoi d'un code d'erreur.
1176  #if [ "$?" != "0" ]; then
1177  #    ERREUR "Le script traitement_disque_destination.sh a renvoyé un code d'erreur."
1178  #fi
1179  
1180  if [ "$?" != "0" ]; then
1181      echo -e "$COLERREUR"
1182      echo "Il semble que le script traitement_disque_destination.sh ait renvoyé"
1183      echo "un code d'erreur."
1184  
1185      echo -e "$COLINFO"
1186      echo "Cela m'est arrivé avec un message"
1187      echo -e "    $COLERREUR}TERM environment variable not set.$COLINFO}"
1188      echo "dont je n'ai pas réussi à identifier la source."
1189  
1190      POURSUIVRE "Souhaitez-vous poursuivre"
1191  fi
1192  
1193  
1194  
1195  #Il faut récupérer les infos suivantes dans le shell courant qui est parent de celui de traitement_disque_destination.sh:
1196  #    DISK2
1197  #    PARTSWAP_CIBLE
1198  #    PARTROOT_CIBLE
1199  #    PARTHOME_CIBLE
1200  #    PARTVARSE3_CIBLE
1201  #    PARTVAR_CIBLE
1202  
1203  
1204  echo -e "$COLTXT"
1205  echo "Récupération des infos sur les partitions du disque destination."
1206  echo -e "$COLCMD"
1207  if [ "$DDLOCAL" = "2" ]; then
1208      mkdir -p /mirror
1209      scp root@$IPDISTANT:/tmp/mirror/liste_infos_disque2.txt /mirror/
1210  fi
1211  if [ ! -e "/mirror/liste_infos_disque2.txt" ]; then
1212      ERREUR "Les infos concernant le disque destination n'ont pas pu être récupérées."
1213  fi
1214  
1215  DISK2=$(cat /mirror/liste_infos_disque2.txt | grep "^DISK2=" | sed -e "s!^DISK2=!!")
1216  PARTSWAP_CIBLE=$(cat /mirror/liste_infos_disque2.txt | grep "^PARTSWAP_CIBLE=" | sed -e "s!^PARTSWAP_CIBLE=!!")
1217  PARTROOT_CIBLE=$(cat /mirror/liste_infos_disque2.txt | grep "^PARTROOT_CIBLE=" | sed -e "s!^PARTROOT_CIBLE=!!")
1218  PARTHOME_CIBLE=$(cat /mirror/liste_infos_disque2.txt | grep "^PARTHOME_CIBLE=" | sed -e "s!^PARTHOME_CIBLE=!!")
1219  PARTVARSE3_CIBLE=$(cat /mirror/liste_infos_disque2.txt | grep "^PARTVARSE3_CIBLE=" | sed -e "s!^PARTVARSE3_CIBLE=!!")
1220  PARTVAR_CIBLE=$(cat /mirror/liste_infos_disque2.txt | grep "^PARTVAR_CIBLE=" | sed -e "s!^PARTVAR_CIBLE=!!")
1221  
1222  
1223  
1224  
1225  #A ARRANGER: Utiliser une variable $scriptmirror
1226  #            pour permettre à la fois un mirroring local
1227  #            et un mirroring distant.
1228  if [ "$DDLOCAL" = "1" ]; then
1229      scriptmirror="mirror_rsync.sh"
1230  else
1231      scriptmirror="mirror_rsync_distant.sh"
1232  fi
1233  #ATTENTION: La variable $scriptmirror doit être définie avant les ajouts en crontab.
1234  
1235  
1236  
1237  
1238  
1239  
1240  echo -e "$COLPARTIE"
1241  echo "*****************************************"
1242  echo "* Planification des tâches de mirroring *"
1243  echo "*****************************************"
1244  
1245  ######### traitement de la crontab #############
1246  REPONSE=""
1247  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
1248  do
1249      echo -e "$COLTXT"
1250      echo -e "Voulez-vous mettre en place le script rsync en crontab ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}]"
1251      echo -e "Il se lancera tous les jours ouvrables à l'heure de votre choix."
1252      echo -e "Il vous sera aussi proposé de le lancer plusieurs fois par jour."
1253      echo -e "Réponse: $COLSAISIE}\c"
1254      read REPONSE
1255      if [ -z "$REPONSE" ]; then
1256          REPONSE="o"
1257      fi
1258  done
1259  
1260  if [ "$REPONSE" = "o" ]; then
1261  #####
1262      CRONAJOUT=""
1263          while [ "$CRONAJOUT" != "n" ]
1264          do
1265          echo -e "$COLTXT"
1266                  echo -e "Vous allez devoir préciser à quel moment de la journée le script s'exécutera."
1267                  echo
1268                  echo -e "Veuillez indiquer les heures et les minutes sous la forme hh:mn [$COLDEFAUT}02:30$COLTXT}] $COLSAISIE\c"
1269                  read HMCRON
1270                  if [ -z "$HMCRON" ]; then
1271                          HMCRON="02:30"
1272                  fi
1273  
1274                  CRONOK=""
1275                  while [ "$CRONOK" != "o" -a "$CRONOK" != "n" ]
1276                  do
1277              echo -e "$COLTXT"
1278              echo -e "Vous voulez que le script se lance tous les jours à $HMCRON"
1279              echo -e "Est-ce correct? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
1280              read CRONOK
1281              if [ -z "$CRONOK" ]; then
1282                  CRONOK="o"
1283              fi
1284                  done
1285                          if [ "$CRONOK" = "o" ]; then
1286                  echo -e "$COLCMD"
1287                                  MCRON=`echo $HMCRON | cut -d: -f2`
1288                                  HCRON=`echo $HMCRON | cut -d: -f1`
1289                                  echo "$MCRON $HCRON * * * root /mirror/$scriptmirror" >> /etc/crontab
1290                  echo -e "$COLTXT"
1291                                  echo "Modification de la crontab effectuée."
1292  
1293                  CRONAJOUT=""
1294                                  while [ "$CRONAJOUT" != "o" -a "$CRONAJOUT" != "n" ]
1295                                  do
1296                      echo -e "$COLTXT"
1297                      echo "Vous avez choisi que le script se lance tous les jours à $HMCRON"
1298                      echo -e "Voulez-vous qu'il se lance également à un autre moment ? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
1299                      read CRONAJOUT
1300                                  done
1301                          fi
1302          done
1303  fi
1304  
1305  
1306  #Ne faut-il pas redémarrer cron?
1307  
1308  
1309  
1310  
1311  
1312  
1313  
1314  echo -e "$COLPARTIE"
1315  echo "**************************"
1316  echo "* Configuration courrier *"
1317  echo "**************************"
1318  
1319  ##########
1320  # Configuration de l'envoi de mail ####
1321  echo -e "$COLINFO"
1322  echo -e "En cas de problème lors du mirroring des disques,"
1323  echo -e "le script vous previendra par mail."
1324  echo -e "Pour que cela soit possible, Exim doit être configuré."
1325  echo -e "Il ne l'est pas par défaut lors d'une installation avec Digloo."
1326  echo -e "Vous pourrez configurer Exim plus tard en lançant /usr/sbin/eximconfig"
1327  REPONSE=""
1328  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
1329  do
1330      echo -e "$COLTXT"
1331      echo -e "Préférez-vous configurer Exim immédiatement ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}]"
1332      echo
1333      echo -e "Réponse: $COLSAISIE\c"
1334      read REPONSE
1335      if [ -z "$REPONSE" ]; then
1336          REPONSE="o"
1337      fi
1338  done
1339  if [ "$REPONSE" = "o" ]; then
1340      echo -e "$COLTXT"
1341      echo -e "Lancement de la configuration d'exim."
1342      echo -e "En général, la configuration à choisir est la N°3."
1343      # echo -e "Appuyez sur entree pour continuer"
1344      echo -e "$COLCMD"
1345      /usr/sbin/eximconfig
1346  fi
1347  
1348  clear
1349  MAIL_ADMINOK="n"
1350  while [ "$MAIL_ADMINOK" != "o" ]
1351  do
1352      echo -e "$COLTXT"
1353          echo "Il vous faut choisir l'adresse mail qui recevra les rapports d'erreur."
1354      echo "Par exemple : admin@votre_domaine"
1355          echo -e "Quelle adresse mail voulez-vous utiliser? $COLSAISIE\c"
1356          read MAIL_ADMIN
1357  
1358      echo -e "$COLTXT"
1359      echo -e "Vous avez choisi $COLINFO}$MAIL_ADMIN}$COLTXT} comme adresse mail."
1360          echo -e "Est-ce correct ? ($COLCHOIX}o/n$COLTXT}) [$COLDEFAUT}o$COLTXT}] $COLSAISIE}\c"
1361          read MAIL_ADMINOK
1362          if [ -z "$MAIL_ADMINOK" ]; then
1363                  MAIL_ADMINOK="o"
1364          fi
1365  done
1366  
1367  
1368  
1369  
1370  
1371  
1372  
1373  
1374  
1375  ################# Création des scripts ########################
1376  
1377  echo -e "$COLPARTIE"
1378  echo "************************"
1379  echo "* Création des scripts *"
1380  echo "************************"
1381  
1382  echo -e "$COLTXT"
1383  echo "Création des scripts..."
1384  if [ "$DDLOCAL" = "2" ]; then
1385      echo "Et copie des scripts vers la machine $IPDISTANT"
1386  fi
1387  
1388  echo -e "$COLCMD"
1389  mkdir -p /mirror
1390  
1391  # Création du script rsync
1392  touch /mirror/$scriptmirror
1393  chmod 700 /mirror/$scriptmirror
1394  
1395  if [ "$DDLOCAL" = "1" ]; then
1396      LOCALISATION_DISQUE="local"
1397      DOSSMIRROR="/mirror"
1398  else
1399      LOCALISATION_DISQUE="$IPDISTANT"
1400      DOSSMIRROR="/tmp/mirror"
1401  fi
1402  
1403  
1404  
1405  
1406  if [ "$DDLOCAL" = "1" ]; then
1407      scriptumountdisk2="umount_$DISK2.sh"
1408  else
1409      scriptumountdisk2="umount_$IPDISTANT}_$DISK2.sh"
1410  fi
1411  #Cette variable doit être initialisée ici parce qu'elle est utilisée en début de script $scriptmirror.
1412  
1413  
1414  echo "#!/bin/bash" > /mirror/$scriptmirror
1415  
1416  if [ "$DDLOCAL" = "1" ]; then
1417      echo "/mirror/$scriptumountdisk2 2>/dev/null" >> /mirror/$scriptmirror
1418  else
1419      echo "scp /mirror/$scriptumountdisk2 root@$IPDISTANT:$DOSSMIRROR/" >> /mirror/$scriptmirror
1420      echo "ssh root@$IPDISTANT \"$DOSSMIRROR/$scriptumountdisk2 2>/dev/null\"" >> /mirror/$scriptmirror
1421  fi
1422  
1423  echo 'FICHIERLOG="/mirror/log_rsync_'$LOCALISATION_DISQUE}'_`date +%a%Hh%M`"' >> /mirror/$scriptmirror
1424  echo 'touch $FICHIERLOG' >> /mirror/$scriptmirror
1425  echo 'echo "Fichier de log du" `date` > $FICHIERLOG '  >> /mirror/$scriptmirror
1426  
1427  
1428  
1429  
1430  # partition /
1431  echo 'echo "Montage de la partition Racine" '>> /mirror/$scriptmirror
1432  if [ "$DDLOCAL" = "1" ]; then
1433      echo "mount -t ext3 /dev/$PARTROOT_CIBLE /mirror/part_root" >> /mirror/$scriptmirror
1434  else
1435      echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTROOT_CIBLE $DOSSMIRROR/part_root\"" >> /mirror/$scriptmirror
1436  fi
1437  
1438  echo -e 'if [ $? != 0 ]; then' >> /mirror/$scriptmirror
1439  echo -e "echo \"** ERREUR ** lors du montage de la partition / de $DISK2\"  | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1440  echo -e 'echo "Le script ne peut se poursuivre." | tee -a $FICHIERLOG '>> /mirror/$scriptmirror
1441  echo -e "echo \"VÉRIFIEZ LE BON FONCTIONNEMENT DU $DISK2\" | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1442  echo -e "touch /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1443  echo -e "echo \"Rapport de fonctionnement du script de mirroring lors de son lancement.\" > /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1444  echo -e "echo \"Voici les problèmes constatés:\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1445  echo -e "echo \"\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1446  echo -e 'cat $FICHIERLOG >> /mirror/mail_alerte.txt' >> /mirror/$scriptmirror
1447  echo -e "mail $MAIL_ADMIN -s \"[Alerte /mirror/$scriptmirror] Pb avec le script\" < /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1448  echo -e "exit 1" >> /mirror/$scriptmirror
1449  echo -e "fi" >> /mirror/$scriptmirror
1450  
1451  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1452  echo 'echo "rsync de la partition Racine" | tee $FICHIERLOG' >> /mirror/$scriptmirror
1453  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1454  
1455  if [ "$DDLOCAL" = "1" ]; then
1456      if [ "$PARTVAR" != "aucune" ]; then
1457          #echo 'rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/*  / /mirror/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1458          echo '/usr/bin/rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/*  / /mirror/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1459      else
1460          #echo 'rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/se3/*  / /mirror/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1461          echo '/usr/bin/rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/se3/*  / /mirror/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1462      fi
1463  else
1464      #rsync -az -e ssh /home/tests_rsync/rsync root@192.168.52.102:/home/tests_rs
1465      if [ "$PARTVAR" != "aucune" ]; then
1466          #echo 'rsync -e ssh -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/*  / root@'$IPDISTANT':'$DOSSMIRROR'/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1467          echo '/usr/bin/rsync -e ssh --rsync-path=/usr/bin/rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/*  / root@'$IPDISTANT':'$DOSSMIRROR'/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1468      else
1469          #echo 'rsync -e ssh -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/se3/*  / root@'$IPDISTANT':'$DOSSMIRROR'/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1470          echo '/usr/bin/rsync -e ssh --rsync-path=/usr/bin/rsync -av --delete --exclude=/home/* --exclude=/mirror/ --exclude=/tmp/* --exclude=/var/lock/* --exclude=/proc/* --exclude=/cdrom/* --exclude=/var/se3/*  / root@'$IPDISTANT':'$DOSSMIRROR'/part_root | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1471      fi
1472  fi
1473  
1474  
1475  
1476  
1477  
1478  if [ "$DDLOCAL" = "1" ]; then
1479      scriptinstalllilodisk2="install_lilo_$DISK2.sh"
1480  else
1481      scriptinstalllilodisk2="install_lilo_${IPDISTANT}_$DISK2.sh"
1482  fi
1483  
1484  #Mise en place de LILO
1485  if [ "$DDLOCAL" = "1" ]; then
1486      echo "if [ -e /mirror/$scriptinstalllilodisk2 ]; then" >> /mirror/$scriptmirror
1487      echo "echo \"Installation de lilo sur $DISK2\"" >> /mirror/$scriptmirror
1488      echo "/mirror/$scriptinstalllilodisk2" >> /mirror/$scriptmirror
1489      echo "fi" >> /mirror/$scriptmirror
1490      echo "umount /dev/$PARTROOT_CIBLE" >> /mirror/$scriptmirror
1491      echo "" >> /mirror/$scriptmirror
1492  else
1493      echo "if [ -e /mirror/$scriptinstalllilodisk2 ]; then" >> /mirror/$scriptmirror
1494      echo "echo \"Installation de lilo sur $DISK2\"" >> /mirror/$scriptmirror
1495      echo "scp /mirror/$scriptinstalllilodisk2 root@$IPDISTANT:$DOSSMIRROR/" >> /mirror/$scriptmirror
1496      echo "ssh root@$IPDISTANT \"$DOSSMIRROR/$scriptinstalllilodisk2\"" >> /mirror/$scriptmirror
1497      echo "fi" >> /mirror/$scriptmirror
1498      echo "ssh root@$IPDISTANT \"umount /dev/$PARTROOT_CIBLE\"" >> /mirror/$scriptmirror
1499      echo "" >> /mirror/$scriptmirror
1500  fi
1501  
1502  
1503  
1504  
1505  
1506  
1507  
1508  #partition /var si elle existe
1509  if [ "$PARTVAR" != "aucune" ]; then
1510  
1511      echo 'echo "Montage de la partition /VAR" '>> /mirror/$scriptmirror
1512      if [ "$DDLOCAL" = "1" ]; then
1513          echo "mount -t ext3 /dev/$PARTVAR_CIBLE /mirror/part_var" >> /mirror/$scriptmirror
1514      else
1515          echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTVAR_CIBLE $DOSSMIRROR/part_var\"" >> /mirror/$scriptmirror
1516      fi
1517  
1518      echo -e 'if [ $? != 0 ]; then' >> /mirror/$scriptmirror
1519      echo -e "echo \"** ERREUR ** lors du montage de la partition /var de $DISK2\"  | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1520      echo -e 'echo "Le script ne peut se poursuivre." | tee -a $FICHIERLOG '>> /mirror/$scriptmirror
1521      echo -e "echo \"VÉRIFIEZ LE BON FONCTIONNEMENT DU $DISK2\" | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1522      echo -e "touch /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1523      echo -e "echo \"Rapport de fonctionnement du script de mirroring lors de son lancement.\" > /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1524      echo -e "echo \"Voici les problèmes constatés:\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1525      echo -e "echo \"\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1526      echo -e 'cat $FICHIERLOG >> /mirror/mail_alerte.txt' >> /mirror/$scriptmirror
1527      echo -e "mail $MAIL_ADMIN -s \"[Alerte /mirror/$scriptmirror] Pb avec le script\" < /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1528      echo -e "exit 1" >> /mirror/$scriptmirror
1529      echo -e "fi" >> /mirror/$scriptmirror
1530  
1531      echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1532      echo 'echo "rsync de la partition /var" | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1533      echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1534      if [ "$DDLOCAL" = "1" ]; then
1535          #echo 'rsync -av --delete --exclude=/se3/* /var/* /mirror/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1536          #echo 'rsync -av --delete --exclude=/se3/* --exclude=/var/lock/* /var/* /mirror/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1537          echo '/usr/bin/rsync -av --delete --exclude=/se3/* --exclude=/var/lock/* /var/* /mirror/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1538          echo "umount /dev/$PARTVAR_CIBLE " >> /mirror/$scriptmirror
1539      else
1540          #echo 'rsync -e ssh -av --delete --exclude=/se3/* /var/* root@'$IPDISTANT':/mirror/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1541          #echo 'rsync -e ssh -av --delete --exclude=/se3/* --exclude=/var/lock/* /var/* root@'$IPDISTANT':'$DOSSMIRROR'/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1542          echo '/usr/bin/rsync -e ssh --rsync-path=/usr/bin/rsync -av --delete --exclude=/se3/* --exclude=/var/lock/* /var/* root@'$IPDISTANT':'$DOSSMIRROR'/part_var | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1543  
1544  
1545  
1546          #echo 'echo "*********"' >> /mirror/$scriptmirror
1547          #echo 'echo "* PAUSE *"' >> /mirror/$scriptmirror
1548          #echo 'echo "*********"' >> /mirror/$scriptmirror
1549          #echo 'read PAUSE' >> /mirror/$scriptmirror
1550  
1551  
1552  
1553          echo "ssh root@$IPDISTANT \"umount /dev/$PARTVAR_CIBLE\" " >> /mirror/$scriptmirror
1554      fi
1555  fi
1556  
1557  
1558  
1559  #partition home
1560  echo 'echo "Montage de la partition HOME " '>> /mirror/$scriptmirror
1561  
1562  if [ "$DDLOCAL" = "1" ]; then
1563      echo "mount -t xfs /dev/$PARTHOME_CIBLE /mirror/part_home" >> /mirror/$scriptmirror
1564  else
1565      echo "ssh root@$IPDISTANT \"mount -t xfs /dev/$PARTHOME_CIBLE $DOSSMIRROR/part_home\"" >> /mirror/$scriptmirror
1566  fi
1567  
1568  echo -e 'if [ $? != 0 ]; then' >> /mirror/$scriptmirror
1569  echo -e "echo \"** ERREUR ** lors du montage de la partition /home de $DISK2\"  | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1570  echo -e 'echo "Le script ne peut se poursuivre." | tee -a $FICHIERLOG '>> /mirror/$scriptmirror
1571  echo -e "echo \"VÉRIFIEZ LE BON FONCTIONNEMENT DU $DISK2\" | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1572  echo -e "touch /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1573  echo -e "echo \"Rapport de fonctionnement du script de mirroring lors de son lancement.\" > /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1574  echo -e "echo \"Voici les problèmes constatés:\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1575  echo -e "echo \"\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1576  echo -e 'cat $FICHIERLOG >> /mirror/mail_alerte.txt' >> /mirror/$scriptmirror
1577  echo -e "mail $MAIL_ADMIN -s \"[Alerte /mirror/$scriptmirror] Pb avec le script\" < /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1578  echo -e "exit 1" >> /mirror/$scriptmirror
1579  echo -e "fi" >> /mirror/$scriptmirror
1580  
1581  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1582  echo 'echo "rsync de la partition /home" | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1583  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1584  if [ "$DDLOCAL" = "1" ]; then
1585      #echo 'rsync -av --delete /home/*  /mirror/part_home | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1586      echo '/usr/bin/rsync -av --delete /home/*  /mirror/part_home | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1587      echo "cd /home" >> /mirror/$scriptmirror
1588      echo "echo \"Sauvegarde / Restauration des ACLS en cours pour /home ....\"" >> /mirror/$scriptmirror
1589      echo "getfacl -R . > /mirror/part_home/list_acls.txt" >> /mirror/$scriptmirror
1590      echo "cd /mirror/part_home/" >> /mirror/$scriptmirror
1591      echo "setfacl --restore=list_acls.txt"  >> /mirror/$scriptmirror
1592      echo "cd /" >> /mirror/$scriptmirror
1593      echo "umount /dev/$PARTHOME_CIBLE" >> /mirror/$scriptmirror
1594  else
1595      #echo 'rsync -e ssh -av --delete /home/* root@'$IPDISTANT':'$DOSSMIRROR'/part_home | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1596      echo '/usr/bin/rsync -e ssh --rsync-path=/usr/bin/rsync -av --delete /home/* root@'$IPDISTANT':'$DOSSMIRROR'/part_home | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1597  
1598      echo "cd /home" >> /mirror/$scriptmirror
1599      echo "echo \"Sauvegarde / Restauration des ACLS en cours pour /home ....\"" >> /mirror/$scriptmirror
1600      echo "getfacl -R . > /mirror/part_home_list_acls.txt" >> /mirror/$scriptmirror
1601  
1602      echo "scp /mirror/part_home_list_acls.txt root@$IPDISTANT:$DOSSMIRROR/part_home/" >> /mirror/$scriptmirror
1603  
1604      #==============================================================
1605      #==============================================================
1606      #==============================================================
1607      #NOTE: Si la machine distante ne dispose pas d'un annuaire LDAP synchro avec l'annuaire du serveur SE3
1608      #      la restauration des ACL sur le poste distant n'est pas possible à ce stade.
1609      #      Elle devra être assurée lors du redémarrage sur le disque miroir.
1610      #
1611      #echo "ssh root@$IPDISTANT \"cd /mirror/part_home/ && setfacl --restore=part_home_list_acls.txt && cd / && umount /dev/$PARTHOME_CIBLE\"" >> /mirror/$scriptmirror
1612  
1613      # J'ai choisi de placer le part_home_list_acls.txt dans /root/ par sécurité, mais on pourrait conserver celui de /home/
1614  
1615      #Avec /root/.profile, il est nécessaire de se loguer une fois en root sur le disque miroir une fois remis en disque principal:
1616      #echo "ssh root@$IPDISTANT \"cp -f /mirror/part_home/part_home_list_acls.txt /root/ && if ! cat /root/.profile | grep part_home_list_acls.txt > /dev/null; then echo 'if [ -e \"/root/part_home_list_acls.txt\" ]; then cd /home; setfacl --restore=/root/part_home_list_acls.txt && rm -f /root/part_home_list_acls.txt;fi' >> /root/.profile;fi && cd / && umount /dev/$PARTHOME_CIBLE\"" >> /mirror/$scriptmirror
1617  
1618      #Avec /etc/init.d/rcS, il ne devrait pas être nécessaire de se loguer:
1619      #Le script est lancé trop tôt (avant le démarrage d'OpenLDAP).
1620      #echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTROOT_CIBLE /mirror/part_root;cp -f /mirror/part_home/part_home_list_acls.txt /mirror/part_root/root/ && if ! cat /mirror/part_root/etc/init.d/rcS | grep part_home_list_acls.txt > /dev/null; then echo 'if [ -e \"/root/part_home_list_acls.txt\" ]; then cd /home; setfacl --restore=/root/part_home_list_acls.txt && rm -f /root/part_home_list_acls.txt;fi' >> /mirror/part_root/etc/init.d/rcS;fi && cd / && umount /dev/$PARTHOME_CIBLE;umount /dev/$PARTROOT_CIBLE\"" >> /mirror/$scriptmirror
1621  
1622  
1623  
1624  
1625  
1626  
1627  
1628  
1629      echo '#! /bin/bash
1630  
1631  NAME="aclrestore"
1632  DESC="Restauration des ACL au premier démarrage uniquement"
1633  DAEMON="/root/aclrestore.sh"
1634  
1635  case "$1" in
1636    start)
1637          echo -n "Starting $DESC: $NAME"
1638          sh $DAEMON
1639          echo "."
1640          ;;
1641    stop)
1642          echo -n "Stopping $DESC: $NAME "
1643          echo "."
1644          ;;
1645    *)
1646          N=/etc/init.d/$NAME
1647          echo "Usage: $N {start|stop}" >&2
1648          exit 1
1649          ;;
1650  esac
1651  
1652  exit 0
1653  ' > $tmp/aclrestore
1654  
1655  
1656      echo '#!/bin/bash
1657  
1658  if [ -e "/root/part_home_list_acls.txt" ]; then
1659      cd /home
1660      setfacl --restore=/root/part_home_list_acls.txt && rm -f /root/part_home_list_acls.txt
1661  fi
1662  
1663  if [ -e "/root/part_var_se3_list_acls.txt" ]; then
1664      cd /var/se3
1665      setfacl --restore=/root/part_var_se3_list_acls.txt && rm -f /root/part_var_se3_list_acls.txt
1666  fi
1667  ' > $tmp/aclrestore.sh
1668  
1669  
1670      echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTROOT_CIBLE $DOSSMIRROR/part_root\"" >> /mirror/$scriptmirror
1671      echo "scp $tmp/aclrestore root@$IPDISTANT:$DOSSMIRROR/part_root/etc/init.d/" >> /mirror/$scriptmirror
1672      echo "scp $tmp/aclrestore.sh root@$IPDISTANT:$DOSSMIRROR/part_root/root/" >> /mirror/$scriptmirror
1673  
1674      echo "ssh root@$IPDISTANT \"chmod 755 $DOSSMIRROR/part_root/etc/init.d/aclrestore && chmod 700 $DOSSMIRROR/part_root/root/aclrestore.sh\"" >> /mirror/$scriptmirror
1675  
1676      echo "ssh root@$IPDISTANT \"cd $DOSSMIRROR/part_root/etc/rc2.d/&&ln -s ../init.d/aclrestore ./S99aclrestore\"" >> /mirror/$scriptmirror
1677  
1678      echo "ssh root@$IPDISTANT \"cp -f $DOSSMIRROR/part_home/part_home_list_acls.txt $DOSSMIRROR/part_root/root/\"" >> /mirror/$scriptmirror
1679      echo "ssh root@$IPDISTANT \"cd / && umount /dev/$PARTHOME_CIBLE\"" >> /mirror/$scriptmirror
1680  
1681      echo "ssh root@$IPDISTANT \"umount /dev/$PARTROOT_CIBLE\"" >> /mirror/$scriptmirror
1682      #==============================================================
1683      #==============================================================
1684      #==============================================================
1685  fi
1686  echo "" >> /mirror/$scriptmirror
1687  
1688  
1689  #partition /var/se3
1690  echo 'echo "Montage de la partition VAR/SE3" '>> /mirror/$scriptmirror
1691  if [ "$DDLOCAL" = "1" ]; then
1692      echo "mount -t xfs /dev/$PARTVARSE3_CIBLE /mirror/part_varse3" >> /mirror/$scriptmirror
1693  else
1694      echo "ssh root@$IPDISTANT \"mount -t xfs /dev/$PARTVARSE3_CIBLE $DOSSMIRROR/part_varse3\"" >> /mirror/$scriptmirror
1695  fi
1696  
1697  echo -e 'if [ $? != 0 ]; then' >> /mirror/$scriptmirror
1698  echo -e "echo \"** ERREUR ** lors du montage de la partition /var/se3 de $DISK2\"  | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1699  echo -e 'echo "Le script ne peut se poursuivre." | tee -a $FICHIERLOG '>> /mirror/$scriptmirror
1700  echo -e "echo \"VÉRIFIEZ LE BON FONCTIONNEMENT DU $DISK2\" | tee -a \$FICHIERLOG " >> /mirror/$scriptmirror
1701  echo -e "touch /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1702  echo -e "echo \"Rapport de fonctionnement du script de mirroring lors de son lancement:\" > /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1703  echo -e "echo \"Voici les problèmes constatés:\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1704  echo -e "echo \"\" >> /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1705  echo -e 'cat $FICHIERLOG >> /mirror/mail_alerte.txt' >> /mirror/$scriptmirror
1706  echo -e "mail $MAIL_ADMIN -s \"[Alerte /mirror/$scriptmirror] Pb avec le script\" < /mirror/mail_alerte.txt" >> /mirror/$scriptmirror
1707  echo -e "exit 1" >> /mirror/$scriptmirror
1708  echo -e "fi" >> /mirror/$scriptmirror
1709  
1710  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1711  echo 'echo "rsync de la partition /var/se3" | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1712  echo 'echo  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1713  if [ "$DDLOCAL" = "1" ]; then
1714      #echo 'rsync -av --delete /var/se3/* /mirror/part_varse3 | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1715      echo '/usr/bin/rsync -av --delete /var/se3/* /mirror/part_varse3 | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1716      echo "cd /var/se3" >> /mirror/$scriptmirror
1717      echo "echo \"Sauvegarde / Restauration des ACLS en cours pour /var/se3...\"" >> /mirror/$scriptmirror
1718      echo "getfacl -R . > /mirror/part_varse3/list_acls.txt" >> /mirror/$scriptmirror
1719      echo "cd /mirror/part_varse3/" >> /mirror/$scriptmirror
1720      echo "setfacl --restore=list_acls.txt"  >> /mirror/$scriptmirror
1721      echo "cd /" >> /mirror/$scriptmirror
1722      echo "umount /dev/$PARTVARSE3_CIBLE " >> /mirror/$scriptmirror
1723  else
1724      #echo 'rsync -e ssh -av --delete /var/se3/* root@'$IPDISTANT':'$DOSSMIRROR'/part_varse3  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1725      echo '/usr/bin/rsync -e ssh --rsync-path=/usr/bin/rsync -av --delete /var/se3/* root@'$IPDISTANT':'$DOSSMIRROR'/part_varse3  | tee -a $FICHIERLOG' >> /mirror/$scriptmirror
1726  
1727      echo "cd /var/se3" >> /mirror/$scriptmirror
1728      echo "echo \"Sauvegarde / Restauration des ACLS en cours pour /var/se3...\"" >> /mirror/$scriptmirror
1729      echo "getfacl -R . > /mirror/part_var_se3_list_acls.txt" >> /mirror/$scriptmirror
1730  
1731      echo "scp /mirror/part_var_se3_list_acls.txt root@$IPDISTANT:$DOSSMIRROR/part_varse3/" >> /mirror/$scriptmirror
1732  
1733      #==============================================================
1734      #==============================================================
1735      #==============================================================
1736      #NOTE: Si la machine distante ne dispose pas d'un annuaire LDAP synchro avec l'annuaire du serveur SE3
1737      #      la restauration des ACL sur le poste distant n'est pas possible à ce stade.
1738      #      Elle devra être assurée lors du redémarrage sur le disque miroir.
1739      #
1740      #echo "ssh root@$IPDISTANT \"cd /mirror/part_varse3/ && setfacl --restore=part_var_se3_list_acls.txt && cd / && umount /dev/$PARTVARSE3_CIBLE\"" >> /mirror/$scriptmirror
1741  
1742      # J'ai choisi de placer le part_var_se3_list_acls.txt dans /root/ par sécurité, mais on pourrait conserver celui de /var/se3/
1743  
1744      #Avec /root/.profile, il est nécessaire de se loguer une fois en root sur le disque miroir une fois remis en disque principal:
1745      #echo "ssh root@$IPDISTANT \"cp -f /mirror/part_varse3/part_var_se3_list_acls.txt /root/ && if ! cat /root/.profile | grep part_var_se3_list_acls.txt > /dev/null; then echo 'if [ -e \"/root/part_var_se3_list_acls.txt\" ]; then cd /var/se3; setfacl --restore=/root/part_var_se3_list_acls.txt && rm -f /root/part_var_se3_list_acls.txt;fi' >> /root/.profile;fi && cd / && umount /dev/$PARTVARSE3_CIBLE\"" >> /mirror/$scriptmirror
1746  
1747      #Avec /etc/init.d/rcS, il ne devrait pas être nécessaire de se loguer:
1748      #Le script est lancé trop tôt (avant le démarrage d'OpenLDAP).
1749      #echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTROOT_CIBLE /mirror/part_root;cp -f /mirror/part_varse3/part_var_se3_list_acls.txt /mirror/part_root/root/ && if ! cat /mirror/part_root/etc/init.d/rcS | grep part_var_se3_list_acls.txt > /dev/null; then echo 'if [ -e \"/root/part_var_se3_list_acls.txt\" ]; then cd /var/se3; setfacl --restore=/root/part_var_se3_list_acls.txt && rm -f /root/part_var_se3_list_acls.txt;fi' >> /mirror/part_root/etc/init.d/rcS;fi && cd / && umount /dev/$PARTVARSE3_CIBLE;umount /dev/$PARTROOT_CIBLE\"" >> /mirror/$scriptmirror
1750  
1751  
1752  
1753      echo "ssh root@$IPDISTANT \"mount -t ext3 /dev/$PARTROOT_CIBLE $DOSSMIRROR/part_root\"" >> /mirror/$scriptmirror
1754  
1755      echo "ssh root@$IPDISTANT \"cp -f $DOSSMIRROR/part_varse3/part_var_se3_list_acls.txt $DOSSMIRROR/part_root/root/\"" >> /mirror/$scriptmirror
1756      echo "ssh root@$IPDISTANT \"cd / && umount /dev/$PARTVARSE3_CIBLE\"" >> /mirror/$scriptmirror
1757  
1758      echo "ssh root@$IPDISTANT \"umount /dev/$PARTROOT_CIBLE\"" >> /mirror/$scriptmirror
1759  
1760      #==============================================================
1761      #==============================================================
1762      #==============================================================
1763  fi
1764  
1765  
1766  
1767  echo "echo -e '\033[1;35m'" >> /mirror/$scriptmirror
1768  echo "echo '***********'" >> /mirror/$scriptmirror
1769  echo "echo '* Terminé *'" >> /mirror/$scriptmirror
1770  echo "echo '***********'" >> /mirror/$scriptmirror
1771  echo "echo -e '\033[0;37m'" >> /mirror/$scriptmirror
1772  
1773  
1774  
1775  # Création du script mount_disk2
1776  if [ "$DDLOCAL" = "1" ]; then
1777      scriptmountdisk2="mount_$DISK2.sh"
1778  else
1779      scriptmountdisk2="mount_${IPDISTANT}_$DISK2.sh"
1780  fi
1781  
1782  touch /mirror/$scriptmountdisk2
1783  chmod 700 /mirror/$scriptmountdisk2
1784  echo "mount -t ext3 /dev/$PARTROOT_CIBLE  $DOSSMIRROR/part_root" > /mirror/$scriptmountdisk2
1785  if [ "$PARTVAR" != "aucune" ]; then
1786          echo "mount -t ext3 /dev/$PARTVAR_CIBLE  $DOSSMIRROR/part_var" >> /mirror/$scriptmountdisk2
1787  fi
1788  echo "mount -t xfs /dev/$PARTHOME_CIBLE $DOSSMIRROR/part_home" >> /mirror/$scriptmountdisk2
1789  echo "mount -t xfs /dev/$PARTVARSE3_CIBLE $DOSSMIRROR/part_varse3" >> /mirror/$scriptmountdisk2
1790  
1791  if [ "$DDLOCAL" = "2" ]; then
1792      scp /mirror/$scriptmountdisk2 root@$IPDISTANT:$DOSSMIRROR/
1793      ssh root@$IPDISTANT "chmod 700 $DOSSMIRROR/$scriptmountdisk2"
1794  fi
1795  
1796  
1797  
1798  
1799  # Création du script umount_disk2
1800  touch /mirror/$scriptumountdisk2
1801  chmod 700 /mirror/$scriptumountdisk2
1802  echo "umount /dev/$PARTROOT_CIBLE" > /mirror/$scriptumountdisk2
1803  echo "umount /dev/$PARTHOME_CIBLE" >> /mirror/$scriptumountdisk2
1804  echo "umount /dev/$PARTVARSE3_CIBLE" >> /mirror/$scriptumountdisk2
1805  if [ "$PARTVAR" != "aucune" ]; then
1806          echo "umount /dev/$PARTVAR_CIBLE" >> /mirror/$scriptumountdisk2
1807  
1808  fi
1809  
1810  if [ "$DDLOCAL" = "2" ]; then
1811      scp /mirror/$scriptumountdisk2 root@$IPDISTANT:$DOSSMIRROR/
1812      ssh root@$IPDISTANT "chmod 700 $DOSSMIRROR/$scriptumountdisk2"
1813  fi
1814  
1815  
1816  
1817  
1818  
1819  # Création du script install_lilo_disk2
1820  touch /mirror/$scriptinstalllilodisk2
1821  chmod 700 /mirror/$scriptinstalllilodisk2
1822  echo "cp $DOSSMIRROR/lilo2.conf $DOSSMIRROR/part_root/lilo2.conf" > /mirror/$scriptinstalllilodisk2
1823  #echo "lilo -r $DOSSMIRROR/part_root -C lilo2.conf" >> /mirror/$scriptinstalllilodisk2
1824  echo "/sbin/lilo -r $DOSSMIRROR/part_root -C lilo2.conf" >> /mirror/$scriptinstalllilodisk2
1825  echo "mv $DOSSMIRROR/$scriptinstalllilodisk2 $DOSSMIRROR/${scriptinstalllilodisk2}_sav" >> /mirror/$scriptinstalllilodisk2
1826  
1827  if [ "$DDLOCAL" = "2" ]; then
1828      scp /mirror/$scriptinstalllilodisk2 root@$IPDISTANT:$DOSSMIRROR/
1829      ssh root@$IPDISTANT "chmod 700 $DOSSMIRROR/$scriptinstalllilodisk2"
1830  fi
1831  
1832  
1833  
1834  # Création du fichier de conf de lilo pour le 2e disque
1835  if [ "$DDLOCAL" = "1" ]; then
1836      fichlilo2="lilo2.conf"
1837  else
1838      fichlilo2="lilo2_${IPDISTANT}.conf"
1839  fi
1840  touch /mirror/$fichlilo2
1841  chmod 700 /mirror/$fichlilo2
1842  echo "lba32" > /mirror/$fichlilo2
1843  echo "disk=/dev/$DISK2" >> /mirror/$fichlilo2
1844  echo "bios=0x80" >> /mirror/$fichlilo2
1845  cat /etc/lilo.conf | sed -e '/^$/d' | sed -e '/^#/ d' | sed -e "/lba32/ d" | sed -e "/disk=\/dev.*/ d" | sed -e "/bios=.*/ d" | sed -e "s/boot=\/dev\/$DISK1/boot=\/dev\/$DISK2/" >>  /mirror/$fichlilo2
1846  
1847  if [ "$DDLOCAL" = "2" ]; then
1848      scp /mirror/$fichlilo2 root@$IPDISTANT:$DOSSMIRROR/
1849      ssh root@$IPDISTANT "if [ -e \"$DOSSMIRROR/lilo2.conf\" ]; then rm -f $DOSSMIRROR/lilo2.conf ;fi && mv $DOSSMIRROR/$fichlilo2 $DOSSMIRROR/lilo2.conf && chmod 700 $DOSSMIRROR/lilo2.conf"
1850  fi
1851  
1852  
1853  
1854  echo -e "$COLTXT"
1855  echo "Fin de la création des scripts."
1856  
1857  POURSUIVRE
1858  
1859  
1860  
1861  ###################### fin de la création des scripts ###############################
1862  
1863  clear
1864  
1865  echo -e "$COLPARTIE"
1866  echo "*******"
1867  echo "* FIN *"
1868  echo "*******"
1869  
1870  echo -e "$COLINFO"
1871  echo "Script d'installation terminé !!!"
1872  echo ""
1873  echo ""
1874  echo "Le script d'installation a généré trois scripts dans /mirror !"
1875  echo "Le script principal rsync /mirror/$scriptmirror"
1876  echo
1877  echo "Un script /mirror/$scriptmountdisk2 vous permettant de monter les partitions"
1878  echo "de $DISK2 dans les sous repertoires de /mirror afin d'en visualiser le contenu."
1879  echo
1880  echo "Un script /mirror/$scriptumountdisk2 vous permettant de démonter vos partitions"
1881  echo "de $DISK2 dans les sous repertoires de /mirror"
1882  echo
1883  
1884  if [ "$DDLOCAL" = "2" ]; then
1885      echo "Comme vous avez optez pour un mirroring vers un poste distant,"
1886      echo "ce sont les scripts $scriptmountdisk2 et $scriptumountdisk2 situés"
1887      echo "sur la machine $IPDISTANT que vous devrez exécuter si le besoin"
1888      echo "d'accès au données mirrorées se fait sentir."
1889  fi
1890  
1891  REPONSE=""
1892  while [ "$REPONSE" != "o" -a "$REPONSE" != "n" ]
1893  do
1894          echo -e "$COLTXT"
1895      echo "Voulez-vous lancer le script rsync de suite "
1896      echo -e "afin d'effectuer une première synchronisation des disques? ($COLCHOIX}o/n$COLTXT}) $COLSAISIE\c"
1897      read REPONSE
1898  done
1899  
1900  if [ "$REPONSE" = "o" ]; then
1901          echo -e "$COLTXT"
1902      echo "Script lancé !"
1903          echo -e "$COLCMD"
1904      cd /mirror/
1905      ./$scriptmirror
1906  fi
1907  exit 0
1908  


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