[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |