#!/usr/bin/rexx /* restore of one or more partitions */ /*trace ?i ; nop*/ 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm /tmp/backup*' ask_dir_to_backup = '"Select a Directory to backup"' wrong_directory_mounted = '"Verkeerde_Directory"' wrong_directory_text = '"Een verkeerde directory is gemount op de backup-drive"' wrong_password = '"Fout_tijdens_Mount"' wrong_password_text = '"Is het paswoord misschien verkeerd ingegeven?"' succes = '"Succes!!!"' succes_text = '"De Backup is succesvol gelopen."' error_during_mkdir = '"Fout_tijdens_mkdir"' error_during_mkdir_text = '"Er is een fout opgetreden bij het aanmaken van de backup directory /mntbackup"' error_during_mount = '"Fout_tijdens_mount"' error_during_mount_text = '"Er is een fout opgetreden bij de mount van de backup directory /mntbackup"' error_during_umount = '"Fout_tijdens_umount"' error_during_umount_text = '"Er is een fout opgetreden bij de unmount van de verkeerde backup directory"' no_mntbackup = '"no_/mntbackup"' no_mntbackup_text = '"/mntbackup bestaat niet"' mix_of_mountpoints = '"Mix of Mountpoints"' mix_of_mountpoints_text = '"ofwel alleen de No.Mounts samen doen of de gemounte samen doen"' backupdev_missing = '"Backup Device not Found"' backupdev_missing_text = '"Is de Backupdisk verbonden?"' wrong_hardware_model_text = '"Verkeerde Machine"' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm /tmp/backup*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A hostnamectl | grep "Hardware Model:" > /tmp/backupHardware_Model' backup_raid_member_UUID = "" Hardware_Model = linein('/tmp/backupHardware_Model') Hardware_Model = substr(Hardware_Model,pos(':',Hardware_Model) + 2) select when Hardware_Model = "Alienware Area-51 R2" then do backupdev_UUID = "50ea40b9-dd6b-4a87-836b-f6965841f279" grubreboot = 3 end when Hardware_Model = "Marilou Dell" then do backupdev_UUID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" grubreboot = 2 end when Hardware_Model = "HP ProBook 4510s" then do backupdev_UUID = "e092c18f-0979-46ae-979f-409db1d08e2a" grubreboot = 2 end when Hardware_Model = "Z10PE-D16 WS" then do backupdev_UUID = "54961d29-4f9e-4fe5-8e17-b6ea8864c3f3" backup_raid_member_UUID = "a6f4693e-1554-697b-5c93-edf466ac4f07" grubreboot = 2 end otherwise 'echo 'date("I") time("N") wrong_hardware_model_text' >> /tmp/backup.log' exit 15 end mntbackup = "/mntbackup" backupdir = "backup_partition" backupdir = mntbackup"/"backupdir mountOK = 0 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A blkid | grep 'backupdev_UUID' > /tmp/backupuuid' returncode = RC backupdev = linein('/tmp/backupuuid') if backupdev = '' then do if backup_raid_member_UUID \= '' then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A blkid | grep 'backup_raid_member_UUID' > /tmp/backupraidmemberuuid' returncode = RC if lines('/tmp/backupraidmemberuuid') = 0 then do 'DISPLAY=:1 zenity --info --title='backupdev_missing' --text='backupdev_missing_text exit 15 end backupraidmembers = '' do while lines('/tmp/backupraidmemberuuid') \= 0 line = linein('/tmp/backupraidmemberuuid') backupraidmembers = backupraidmembers substr(line,1,length(word(line,1)) -1) end 'cat /proc/mdstat > /tmp/backupmdstat' mdarrays = '' do while lines('/tmp/backupmdstat') \= 0 line = linein('/tmp/backupmdstat') if word(line,1) = "Personalities" then iterate if word(line,2) = ":" then mdarrays = mdarrays","substr(word(line,1),3) else iterate end mdarrays = substr(mdarrays,2) interpret 'mdarray = min('mdarrays')' if mdarray = 1 then interpret 'backupdev = max('mdarrays') + 1' else backupdev = mdarray -1 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mdadm --assemble /dev/md'backupdev backupraidmembers backupdev = '/dev/md'backupdev':' end else do 'DISPLAY=:1 zenity --info --title='backupdev_missing' --text='backupdev_missing_text exit 15 end end backupdev = substr(backupdev,6,length(word(backupdev,1)) -6) 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount | grep /dev/'backupdev ' > /tmp/backupmounted' do x = 0 while lines('/tmp/backupmounted') = 1 backupmounted = linein('/tmp/backupmounted') end select when x = 0 then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount /dev/'backupdev' 'mntbackup' >> /tmp/backupmount.txt 2>&1' select when RC = 0 then nop when RC = 1 then do 'DISPLAY=:1 zenity --info --title='error_during_mount' --text='error_during_mount_text exit 15 end when RC = 32 then do 'stat 'mntbackup' > /dev/null 2>&1' if RC = 1 then do 'DISPLAY=:1 zenity --info --title='no_mntbackup' --text='no_mntbackup_text exit 15 end end otherwise nop end end when x = 1 then do if mntbackup \= word(backupmounted,3) then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A umount /dev/'backupdev' > /dev/null 2>&1' if RC = \0 then do 'DISPLAY=:1 zenity --info --title='error_during_umount' --text='error_during_umount_text exit 15 end 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount /dev/'backupdev' 'mntbackup' >> /tmp/backupmount.txt 2>&1' select when RC = 0 then nop when RC = 1 then do 'DISPLAY=:1 zenity --info --title='error_during_mount' --text='error_during_mount_text exit 15 end when RC = 32 then nop otherwise nop end mountOK = 1 end end when x > 1 then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A umount /dev/'backupdev' > /dev/null 2>&1' if RC = \0 then do 'DISPLAY=:1 zenity --info --title='error_during_umount' --text='error_during_umount_text exit 15 end 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount /dev/'backupdev' 'mntbackup' >> /tmp/backupmount.txt 2>&1' select when RC = 0 then nop when RC = 1 then do 'DISPLAY=:1 zenity --info --title='error_during_mount' --text='error_during_mount_text exit 15 end when RC = 32 then nop otherwise nop end mountOK = 1 end otherwise nop end 'stat 'backupdir'> /dev/null 2>&1' returncode = RC select when returncode = 0 then nop when returncode = 1 then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mkdir -p 'backupdir' > /dev/null 2>&1' returncode = RC if RC \= 0 then do 'DISPLAY=:1 zenity --info --title='error_during_mkdir' --text='error_during_mkdir_text exit 15 end 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A chmod 777 'backupdir' > /dev/null 2>&1' end when returncode = 32 then do msgmnt = linein('/tmp/backupmount.txt') if word(msgmnt,7) \= mntbackup"." then do 'DISPLAY=:1 zenity --info --title='wrong_directory_mounted' --text='wrong_directory_text exit 15 end end otherwise 'DISPLAY=:1 zenity --info --title='wrong_password' --text='wrong_password_text exit 15 end /***************************************************************************************************************************************************************************************************/ 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/to*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/backup*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/catinfo*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/info*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/restore*' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A rm 'backupdir'/uuid*' backupdevice. = '' backupdevice.0 = 0 backupuuid. = '' backupuuid.0 = 0 backupfstype. = '' backupfstype.0 = 0 backupsize. = '' backupsize.0 = 0 backupsizetype. = '' backupsizetype.0 = 0 backupinfo. = '' backupinfo.0 = 0 prevbackupuuid = '' restorelin = '' devices = '' devicelist. = '' devicelist.0 = 1 fstypelist. = '' fstypelist.0 = 1 sizelist. = '' sizelist.0 = 1 sizetypelist. = '' sizetypelist.0 = 1 devtel = 1 prevuuid = '' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A ls 'backupdir'/*.info > 'backupdir'/backup_info_lst' do t = 1 while lines(backupdir'/backup_info_lst') = 1 informationfile = linein(backupdir'/backup_info_lst') backupinfo.t = linein(informationfile) backupinfo.0 = backupinfo.0 + 1 end ADDRESS SYSTEM "sort" WITH INPUT STEM backupinfo. OUTPUT STEM backupinfo. do t = 1 to backupinfo.0 parse value backupinfo.t with backupuuid.t . backupfstype.t . backupsize.t backupsizetype.t backuplabel.t 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A blkid > /tmp/backupblkid't do while lines('/tmp/backupblkid't) device = linein('/tmp/backupblkid't) if pos(backupuuid.t,device) \=0 then do device = substr(device,6) backupdevice.t = substr(device,1,pos(':',device) - 1) leave end else backupdevice.t = 'nodev' end 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount | grep 'backupdevice.t' > /tmp/backupmounted'backupdevice.t' 2>/dev/null' mntinfo = linein('/tmp/backupmounted'backupdevice.t) if word(mntinfo,1) = '/dev/'backupdevice.t then backupmountpoint.t = word(mntinfo,3) else backupmountpoint.t = 'Not.Mounted' end do tll=1 to backupinfo.0 if backupdevice.tll = 'nodev' then iterate if backupuuid.tll \= prevbackupuuid then do devicelist.devtel = backupdevice.tll fstypelist.devtel = backupfstype.tll sizelist.devtel = backupsize.tll sizetypelist.devtel = backupsizetype.tll labellist.devtel = backuplabel.tll mountpointlist.devtel = backupmountpoint.tll uuidlist.devtel = backupuuid.tll devtel = devtel + 1 devicelist.0 = devicelist.0 + 1 prevbackupuuid = backupuuid.tll end end do tosortline.0 = 1 to devicelist.0 -1 sorttel = tosortline.0 tosortline.sorttel = devicelist.sorttel fstypelist.sorttel mountpointlist.sorttel labellist.sorttel sizelist.sorttel sizetypelist.sorttel uuidlist.sorttel end ADDRESS SYSTEM "sort" WITH INPUT STEM tosortline. OUTPUT STEM sortedline. if userid() \= 'marco' then do dev = 1 to devicelist.0 -1 parse value sortedline.dev with devicelist.dev fstypelist.dev mountpointlist.dev labellist.dev sizelist.dev sizetypelist.dev uuidlist.dev devices = devices 'select' devicelist.dev fstypelist.dev mountpointlist.dev labellist.dev sizelist.dev sizetypelist.dev uuidlist.dev end else do dev = 2 to devicelist.0 parse value sortedline.dev with devicelist.dev fstypelist.dev mountpointlist.dev labellist.dev sizelist.dev sizetypelist.dev uuidlist.dev devices = devices 'select' devicelist.dev fstypelist.dev mountpointlist.dev labellist.dev sizelist.dev sizetypelist.dev uuidlist.dev end 'DISPLAY=:1 zenity --list --checklist --title="Kies de Partities" --add-entry="File:" --print-column=ALL --column="select" --column="device" --column="fstype" --column="mountpoint" --column="label" --column="size" --column="sizetype" --column="uuid" 'devices' --width=660 --height=600 > 'backupdir'/infolist.txt' if RC \= 0 then return infolist = linein(backupdir'/infolist.txt') if infolist ='' then return restorelist = '' teller = 1 do tel = 1 while infolist \= '' parse value infolist with device '|' fstype '|' mountpoint '|' label '|' size '|' sizetype '|' uuid '|' infolist RC = lineout(backupdir'/uuid'tel) /* 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A blkid > 'backupdir'/uuid'tel trace o uuidline = '' do while lines(backupdir'/uuid'tel) device = linein(backupdir'/uuid'tel) if pos(uuid,device) \= 0 then leave end trace ?i ; nop device = substr(word(device,1),1,length(word(device,1)) - 1) device = substr(device,6)*/ RC = lineout(backupdir'/restore_device_info_lst') 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A ls 'backupdir'/*'uuid'.info > 'backupdir'/restore_device_info_lst' do t = 1 while lines(backupdir'/restore_device_info_lst') = 1 infoline = linein(backupdir'/restore_device_info_lst') lastpos = lastpos('.',infoline) - 1 backuptime = substr(infoline,29,19) backupfile = substr(infoline,1,lastpos) 'cat 'infoline' > 'backupdir'/catinfo.'teller do while lines(backupdir'/catinfo.'teller) info = linein(backupdir'/catinfo.'teller) parse value info with uuid devicetest fstype mountpoint size sizetype label restorelist = restorelist select backuptime device fstype label size sizetype backupfile uuid end teller = teller + 1 end end 'DISPLAY=:1 zenity --list --checklist --title="Kies de datums" --add-entry="File:" --print-column=ALL --column="select" --column="backuptime" --column="device" --column="fstype" --column="label" --column="size" --column="sizetype" --column="backupfile" --column="uuid" 'restorelist' --width=610 --height=600 > 'backupdir'/restorelist.txt' if RC \= 0 then return restorelist = linein(backupdir'/restorelist.txt') mounted = 0 uuid.1 = '' uuid.0 = 1 do tel = 1 while restorelist \= '' parse value restorelist with backuptime '|' device '|' fstype '|' label '|' size '|' sizetype '|' backupfile '|' uuid '|' restorelist 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount | grep 'device' > /dev/null 2>&1' if RC \= 0 then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount 'device' > 'backupdir'/'device.tel' 2>&1' 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A blkid | grep 'uuid' > 'backupdir'/uuidmount'tel partition = linein(backupdir'/uuidmount'tel) partition = substr(word(partition,1),1,length(word(partition,1)) - 1) end 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A mount | grep 'device' > /dev/null 2>&1' if RC = 0 then do mountstat = 'mounted' mounted = 1 end else mountstat = 'notmounted' y = uuid.0 do uuidcheck = 1 to y if tel = 1 then do uuidteller = uuid.0 prevuuid = uuid uuid.uuidteller = uuid uuid.0 = uuid.0 + 1 leave end if prevuuid = uuid then do 'zenity --error --title "meerdere datums gelijk!!!" --width 500 --height 100 --text "Er zijnmeerder datums van dezelfde partietie geselecteerd.\n\n\n\n\n er mag maar één datum per partitie geselecteerd worden."' exit 24 end end if tel \= 1 then do uuidteller = uuid.0 uuid.uuidteller = uuid prevuuid = uuid uuid.uuidteller = uuid uuid.0 = uuid.0 + 1 end RC = lineout(backupdir'/torestorelist',uuid backupfile) end if mounted then do 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A grub-reboot 'grubreboot 'SUDO_ASKPASS=/usr/local/bin/backup_ask_password sudo -A reboot' end else 'restore_partition'