#!/bin/bash # 1 Montage du serveur NFS # partition disque # copie mbr # mkfs de l'ext3 # copie windows # copie linux # changement nom sysprep # copie UUID partition linux ########################################################################## # serveur NFS ou sont les fichiers NFSSERVER=oie # partage sur le serveur nfs DATASERVER=/data/ghosts/ #l'endroit où on va monter nfs en local LOCALDATA=/mnt/serveur #le montage local de linux pour modifs LOCALLINUX=/mnt/linux #le montage local de windows pour modifs WINDOWS1=/mnt/windows1 ########################################################################## ########################################################################## echo "C'est parti mon coco...." #on met a l'heure sinon caca dans le tar ntpdate ntp.u-strasbg.fr mkdir $LOCALDATA mkdir $WINDOWS1 mkdir $LOCALLINUX /etc/init.d/portmap start mount $NFSSERVER:$DATASERVER $LOCALDATA # identification du PC MONIP=$(/sbin/ifconfig eth0 |grep "inet addr" |cut -f2 -d':' |tr -s " "|cut -f1 -d' ') MONHOSTFQDN=$(host $MONIP|cut -f5 -d' '|cut -f-3 -d'.') host $MONIP >/dev/null || (MONHOSTFQDN=none.u-strasbg.fr && echo "Attention pas de reverse pour cette ip..."; sleep 60; reboot) MONHOSTSHORT=$(echo $MONHOSTFQDN | cut -f1 -d'.') hostname $MONHOSTFQDN #TODO: changer pour trouver le bon profil suivant le bon PC # on a l'IP donc ca devrait etre easy PROFIL=7800-160 NBNTFS=2 DEVDISK=/dev/sda DEVNTFS1=/dev/sda1 DEVNTFS2=/dev/sda5 DEVSWAP=/dev/sda6 DEVMDV=/dev/sda7 XRESO=1280 YRESO=1024 DISQUEBOOTGRUB="root (hd0,6)" partition() { /sbin/sfdisk $DEVDISK < $LOCALDATA/$PROFIL/master-sfdisk.dump dd if=$LOCALDATA/$PROFIL/master.mbr of=$DEVDISK } formateNTFS() { if [ $# -eq 1 ]; then mkfs.ntfs -f $1 fi } formateExt3() { if [ $# -eq 1 ]; then mkfs.ext3 -q $1 tune2fs -i 0 -m 0 $1 fi } # Premier parametre: la partition a ecraser # Second parametre: le port copieNTFS() { cat $LOCALDATA/$PROFIL/master-sda1.img.gz_* | gunzip | ntfsclone -r -O $DEVNTFS1 - } # Premier parametre: la partition a ecraser # Second parametre: le port copieLinux() { cat $LOCALDATA/$PROFIL/master-sda7.img.gz_* | gunzip |tar xf - -C $LOCALLINUX } fixeSysprep() { mount.ntfs-3g $DEVNTFS1 $WINDOWS1 cat $WINDOWS1/SYSPREP/sysprep.inf | \ sed -e "s/OrgName=URS/OrgName=URS\n ComputerName=${MONHOSTSHORT}W/" | \ sed -e "s/Xresolution=1024/Xresolution=$XRESO/" | \ sed -e "s/Yresolution=768/Yresolution=$YRESO/" \ > $WINDOWS1/SYSPREP/sysprep.inf.new mv $WINDOWS1/SYSPREP/sysprep.inf.new $WINDOWS1/SYSPREP/sysprep.inf } fixegrub() { sed -e "s/$OLDUUID/$UUIDMDV/" $LOCALLINUX/boot/grub/menu.lst > $LOCALLINUX/boot/grub/menu.lst.new mv -f $LOCALLINUX/boot/grub/menu.lst.new $LOCALLINUX/boot/grub/menu.lst mount -t proc none $LOCALLINUX/proc mount -o bind /dev $LOCALLINUX/dev echo " echo \"find /boot/grub/stage1 $DISQUEBOOTGRUB setup (hd0) quit \" | grub --batch " >> $LOCALLINUX/root/test.sh chmod +x $LOCALLINUX/root/test.sh chroot $LOCALLINUX /root/test.sh rm $LOCALLINUX/root/test.sh } fixefstab() { echo " UUID=$UUIDMDV / ext3 relatime 1 1 none /proc proc defaults 0 0 UUID=$UUIDSWAP swap swap defaults 0 0 oie:/data/home /home nfs defaults 0 0 " >$LOCALLINUX/etc/fstab } fixelinux(){ rm -f $LOCALLINUX/etc/udev/rules.d/61-net_confi* echo "timeout 15;" > $LOCALLINUX/etc/dhclient-eth0.conf #pb carte reseau qui recoie pas les paquets tout de suite } ##################################################################################### ##################################################################################### echo "...fdisk/mbr...." partition echo "...ntfsclone...." formateNTFS $DEVNTFS1 copieNTFS $DEVNTFS1 $PORTNTFS16 echo "...mkskap, mkfs, tune...." if [ $NBNTFS -eq 2 ]; then formateNTFS $DEVNTFS2 fi mkswap $DEVSWAP formateExt3 $DEVMDV echo "...untar...." mount $DEVMDV $LOCALLINUX copieLinux $LOCALLINUX $PORTLINUX16 echo "...calcul des uuid...." # on s'occupe des UUID: on cherche le nouveau et l'ancien dans le fichier de conf UUIDMDV=$(vol_id --uuid $DEVMDV) UUIDSWAP=$(vol_id --uuid $DEVSWAP) OLDUUID=$(grep root=UUID $LOCALLINUX/boot/grub/menu.lst|sed -e 's/.*UUID=//g' | cut -f1 -d' ') # on remplace la où il faut echo "...creation fstab...." # on se fait le fstab a la main ... fixefstab echo "...effacement du 61-net-dev de udev...." fixelinux # TODO: on joint la machine au domaine: echo "...fixe sysprep...." # mettre le nom dans le sysprep fixeSysprep echo "...remplacement UUID dans grub...." fixegrub echo "...thanks you for playing...." umount $LOCALDATA umount $WINDOWS1 umount $LOCALLINUX sync sync umount -a reboot