#!/bin/sh # clone.sh -- # # This file allows the automatic reconditionning of a computer # by automating the installation with Clonezilla # # Created on 2010-20 by collectif Emmabuntüs (contact@emmabuntus.org). # # It was tested and validated on Clonezilla live 2.6.7-28 i686/amd64 # # Home web site : https://emmabuntus.org/ # # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ################################################################################ NAME_CLONE=img_EmmaDE3_FC SEARCH_FILE=clonezilla-img HARD_DRIVE=sda KEY_DRIVE=$(sudo blkid | grep LABEL=\"IMAGES\" | cut -d ':' -f1) UEFI_ON=0 LANGUE=$(echo ${LANG} | cut -d _ -f1) if [ ${LANGUE} = fr ] then message_info_emmabuntus="Clé USB de réemploi pour Emmabuntüs (https://emmabuntus.org)" message_info_sources="Les sources sont sur http://usb-reemploi.emmabuntus.org" message_identification_usb_ko="Warning : La clé USB avec l'étiquette \"IMAGES\" n'a pas été indentifiée. Taper sur une touche quelconque pour sortir du script" message_trouve_usb_avant="Clé USB trouvée sur" message_trouve_usb_apres=", mais ce n'est pas son emplacement habituel, ce qui signifie que vous avez plusieurs disques durs sur ce système." message_selection_usb="Veuillez entrer le numéro correspondant au disque cible de l'installation :" message_mauvais_nombre_disque_dur="Attention : Vous n'avez pas entré un nombre pour selectionner le disque. Taper sur une touche quelconque pour sortir du script" message_mauvais_selection_disque_dur="Attention : Vous n'avez pas entré un nombre correspondant à un disque. Taper sur une touche quelconque pour sortir du script" message_usb_disque_dur_avant="Clé USB trouvée sur" message_usb_disque_dur_apres="et disque sélectionné sur /dev/" message_recherche_clone_uefi="Patientez un moment, nous recherchons les clones de type UEFI présents dans la clé de réemploi sur" message_recherche_clone_legacy="Patientez un moment, nous recherchons les clones de type Legacy présents dans la clé de réemploi sur" message_clone_abscent="Attention : Aucun clone n'a été trouvé sur la clé USB. Taper sur une touche quelconque pour sortir du script" message_clone_trouve="Ce clone a été trouvé sur la clé USB :" message_plusieurs_clones="Plusieurs clones ont été trouvés sur la clé USB, veuillez indiquer le numéro du clone à installer :" message_mauvais_nombre_clone="Attention : Vous n'avez pas entré un nombre correspondant à un clone. Taper sur une touche quelconque pour sortir du script" message_nom_clone="Nom du clone : " message_mauvais_nombre="Attention : Vous n'avez pas entré un nombre correspondant à un clone. Taper sur une touche quelconque pour sortir du script" message_clone_non_present="Attention : ce clone n'esite pas. Taper sur une touche quelconque pour sortir du script" message_info_partition_avant="/!\ Attention : voulez vous partitionner le disque /dev/" message_info_partition_apres=", toutes les données seront détruites ? [O/n]" message_partition_ko="Abandon du partionnement !!!" CODE_OK_MINUSCULE="o" CODE_OK_MAJUSCULE="O" else message_info_emmabuntus="Emmabuntüs reusable USB key (https://emmabuntus.org)" message_info_sources="Sources are on http://usb-reemploi.emmabuntus.org" message_identification_usb_ko="Warning : The identification of the USB key with the LABEL \"IMAGES\" failed, click any key to exit the script" message_trouve_usb_avant="Found a USB Key on" message_trouve_usb_apres=", but it is not in a normal location, which means that there are several hard drives on your computer." message_selection_usb="Please enter the number corresponding to the disk where you want to install :" message_mauvais_nombre_disque_dur="Warning : You did not enter a number to select the disk. Type any key to exit the script" message_mauvais_selection_disque_dur="Warning : You did not enter a number corresponding to a disk. Type any key to exit the script" message_usb_disque_dur_avant="Found a USB Key on" message_usb_disque_dur_apres="and selected hard drive on /dev/" message_recherche_clone_uefi="Please wait, we are looking for UEFI clones present on your reused USB key sitting on" message_recherche_clone_legacy="Please wait, we are looking for Legacy clones present on your reused USB key sitting on " message_clone_abscent="Warning : No clone was found on the USB key, click any key to exit the script" message_clone_trouve="This clone was found on the USB key:" message_plusieurs_clones="Several clones were found on the USB key, please type the number of the clone you want to install :" message_mauvais_nombre_clone="Warning : You did not enter a number to select a clone, click any key to exit the script" message_nom_clone="Clone name : " message_mauvais_nombre="Warning : You did not enter a number corresponding to a clone, click any key to exit the script" message_clone_non_present="Warning : This clone does not exist, click any key to exit the script" message_info_partition_avant="/!\ Warning : Do you want to partition the disk /dev/" message_info_partition_apres=", all data will be erased ? [Y/n]" message_partition_ko="Partitionning aborted !!!" CODE_OK_MINUSCULE="y" CODE_OK_MAJUSCULE="Y" fi echo "" echo ${message_info_emmabuntus} echo ${message_info_sources} echo "" # Identification de la clé USB et du disque dur # Finding out the USB Key and the hard drive if [ -z ${KEY_DRIVE} ] ; then echo -n ${message_identification_usb_ko} echo "" read read_no_correct_label_key exit 0 elif [ ${KEY_DRIVE} = /dev/sdb2 ] ; then HARD_DRIVE=sda elif [ ${KEY_DRIVE} = /dev/sda2 ] ; then HARD_DRIVE=sdb elif [ ${KEY_DRIVE} != "" ] ; then echo "${message_trouve_usb_avant} ${KEY_DRIVE}${message_trouve_usb_apres}" echo ${message_selection_usb} echo "" find_disk=$(sudo fdisk -l | grep 'Disk /dev/sd\|Disk /dev/hd' | cut -d : -f1 | cut -d " " -f2) i=1 for disk_name in ${find_disk} do if [ "${disk_name}2" != ${KEY_DRIVE} ] ; then disk_model=$(sudo fdisk -l ${disk_name} | grep "Disk model" | cut -d : -f2) disk_size=$(sudo fdisk -l ${disk_name} | grep "Disk " | grep sector | cut -d : -f2 | cut -d B -f1) echo "${i} - ${disk_name} - model: ${disk_model} - size: ${disk_size}B" i=$(($i+1)) fi done read read_disk_number # Test si c'est un nombre # Check if the entry is a number if echo ${read_disk_number} | grep -qE '^[0-9]+$'; then echo "" else echo -n ${message_mauvais_nombre_disque_dur} echo "" read read_no_correct_number exit 0 fi i=1 macth_number=0 for disk_name in ${find_disk} do if [ "${disk_name}2" != ${KEY_DRIVE} ] ; then if [ ${read_disk_number} -eq $i ] ; then HARD_DRIVE=${disk_name} macth_number=1 fi i=$(($i+1)) fi done if [ ${macth_number} -eq 1 ] ; then HARD_DRIVE=$(echo ${HARD_DRIVE} | cut -d / -f3) else echo -n ${message_mauvais_selection_disque_dur} echo "" read read_no_correct_number exit 0 fi fi echo "${message_usb_disque_dur_avant} ${KEY_DRIVE} ${message_usb_disque_dur_apres}${HARD_DRIVE}" echo "" if test -d /sys/firmware/efi/ ; then # Mode UEFI UEFI_ON=1 echo "${message_recherche_clone_uefi} ${KEY_DRIVE} ..." else echo "${message_recherche_clone_legacy} ${KEY_DRIVE} ..." fi echo "" # Positionnement sur la clé USB au niveau de clones # Go to clones top dir cd /home/partimag # Recherche des dossiers contenant des clones # Looking for clone folders if test -d /sys/firmware/efi/ ; then # Mode UEFI find_clone_directory=$(find . -type f -name ${SEARCH_FILE} | grep -i UEFI | cut -d '/' -f2) else find_clone_directory=$(find . -type f -name ${SEARCH_FILE} | grep -vi UEFI | cut -d '/' -f2) fi nb_clone_directory=$(echo ${find_clone_directory} | wc -w) if [ ${nb_clone_directory} -eq 0 ] ; then echo -n ${message_clone_abscent} echo "" read read_no_clone exit 0 elif [ ${nb_clone_directory} -eq 1 ] ; then echo -n "${message_clone_trouve} ${find_clone_directory}" echo "" NAME_CLONE=${find_clone_directory} else echo ${message_plusieurs_clones} echo "" i=1 for clone_name in ${find_clone_directory} do echo "${i} - ${clone_name}" i=$(($i+1)) done read read_clone_number # echo "Clone number : ${read_clone_number}" # Test si c'est un nombre # Check if entry is a number if echo ${read_clone_number} | grep -qE '^[0-9]+$'; then echo "" else echo -n ${message_mauvais_nombre_clone} echo "" read read_no_correct_number exit 0 fi i=1 macth_number=0 for clone_name in ${find_clone_directory} do if [ ${read_clone_number} -eq $i ] ; then NAME_CLONE=${clone_name} macth_number=1 fi i=$(($i+1)) done if [ ${macth_number} -eq 1 ] ; then echo "${message_nom_clone} ${NAME_CLONE}" echo "" else echo -n ${message_mauvais_nombre} echo "" read read_no_correct_number exit 0 fi fi # Test si le répertoire du clone existe sinon fin du script # Chek if clone directory exists, else end of script if ! test -d ./${NAME_CLONE} ; then echo -n ${message_clone_non_present} echo "" read read_no_clone_directory exit 0 fi # Partie active du script # The active part of the script echo -n "${message_info_partition_avant}${HARD_DRIVE}${message_info_partition_apres}" read read_1 if [ "$read_1" = ${CODE_OK_MINUSCULE} ] || [ "$read_1" = ${CODE_OK_MAJUSCULE} ] ; then echo -n "${message_info_partition_avant}${HARD_DRIVE}${message_info_partition_apres}" read read_2 if [ "$read_2" = ${CODE_OK_MINUSCULE} ] || [ "$read_2" = ${CODE_OK_MAJUSCULE} ] ; then /home/partimag/parted.sh ${HARD_DRIVE} ${UEFI_ON} sudo /usr/sbin/ocs-sr -g auto -e1 auto -e2 -r -j2 -k -r -scr -p reboot restoredisk ${NAME_CLONE} ${HARD_DRIVE} else echo ${message_partition_ko} fi else echo ${message_partition_ko} fi