]> git.sur5r.net Git - bacula/rescue/blobdiff - rescue/linux/usb/src/scripts/chrootscript
Add new usb rescue key code
[bacula/rescue] / rescue / linux / usb / src / scripts / chrootscript
diff --git a/rescue/linux/usb/src/scripts/chrootscript b/rescue/linux/usb/src/scripts/chrootscript
new file mode 100755 (executable)
index 0000000..00bc665
--- /dev/null
@@ -0,0 +1,307 @@
+#!/bin/sh
+#iface=`ifconfig |cut -d" " -f1|head -n1`
+
+swp=`blkid |grep swap|awk '{print $1}'|cut -d: -f1|head -n1`
+if [ ! $swp = "" ];then
+swapon $swp
+fi
+
+iface=`grep dev= working/scripts/start_network|cut -d= -f2`
+. ./unmount-all
+howmany=`ifconfig |cut -d" " -f1 |grep -v '^$' |grep -v lo|wc -l`
+
+tmp=""
+echo "">tmp
+ifconfig |cut -d" " -f1 |grep -v '^$' |grep -v lo |while read line; do
+#line=${line%?}
+
+echo `echo $line $line'\'`>>tmp
+
+tmp2=`cat tmp`
+#tmp2=${tmp2%?}
+echo $tmp2 >tmp
+done
+tmp=`cat tmp`
+
+if [ -f ../../../scripts/nozen ]; then 
+DIALOG=dialog
+else
+DIALOG=Xdialog
+fi
+
+$DIALOG --menu "Which ethernet adapter connects to the director ??:" 30 60 20 $tmp 2>ans 
+ifaceans=`cat ans`
+
+
+
+
+sed -i 's/'$iface'/'$ifaceans'/g' working/scripts/start_network
+. ./working/scripts/start_network
+. ./unmount-all
+if [ -f mount_drives ];then
+rm mount_drives
+fi
+
+if [ -d /media/bs-rescue/chroot ];then
+rm -r /media/bs-rescue/chroot
+fi
+mkdir /media/bs-rescue/chroot
+
+
+touch mount_drives
+cat disklist|while read line;do
+cat working/scripts/mount_drives|grep $line>>/dev/null 2>&1
+if [ $? = 0 ];then
+cat working/scripts/mount_drives|grep $line|while read LINE;do
+cat mount_drives|grep "$LINE"
+if [ ! $? = 0 ];then
+echo $LINE>>mount_drives
+fi
+done
+fi
+done
+
+cat lvdisks|while read line;do
+cat working/scripts/mount_drives|grep $line>>/dev/null 2>&1
+if [ $? = 0 ];then
+cat working/scripts/mount_drives|grep $line|while read LINE;do
+cat mount_drives|grep "$LINE"
+if [ ! $? = 0 ];then
+echo $LINE>>mount_drives
+fi
+done
+fi
+done
+
+chmod +x mount_drives
+. ./mount_drives
+if [ ! -d /media/bs-rescue/chroot/sys ];then
+mkdir /media/bs-rescue/chroot/sys
+fi
+if [ ! -d /media/bs-rescue/chroot/tmp ];then
+mkdir /media/bs-rescue/chroot/tmp
+chmod 777 /media/bs-rescue/chroot/tmp
+fi
+if [ ! -d /media/bs-rescue/chroot/dev ];then
+mkdir /media/bs-rescue/chroot/dev
+fi
+if [ -f /media/bs-rescue/chroot/bacula-fdstatic ];then
+rm /media/bs-rescue/chroot/bacula-fdstatic
+fi
+#cp bacula-fdstatic /media/bs-rescue/chroot
+#cp batermined /media/bs-rescue/chroot
+#cp working/diskinfo/bacula-fd.conf /media/bs-rescue/chroot #### doesn t work if you copy files
+#cp working/diskinfo/bat.conf /media/bs-rescue/chroot          before mounting disks
+if [ ! -d /media/bs-rescue/chroot/proc ];then
+mkdir /media/bs-rescue/chroot/proc
+fi
+mount -o bind /proc /media/bs-rescue/chroot/proc
+
+
+
+
+
+
+cp working/diskinfo/bacula-fd.conf /media/bs-rescue/chroot
+
+if [ ! -d /media/bs-rescue/chroot/etc ];then
+mkdir -p /media/bs-rescue/chroot/etc
+fi
+if [ ! -d /media/bs-rescue/chroot/lib ];then
+mkdir -p /media/bs-rescue/chroot/lib
+fi
+cp /lib/libnss_dns.so.2 /media/bs-rescue/chroot/lib
+cp /etc/nsswitch.conf /media/bs-rescue/chroot/etc
+cp /etc/resolv.conf /media/bs-rescue/chroot/etc
+cp ping.ermined /media/bs-rescue/chroot/ping
+
+if [ ! -d /media/bs-rescue/chroot/var/bacula/working ];then
+mkdir -p /media/bs-rescue/chroot/var/bacula/working
+fi
+if [ ! -d /media/bs-rescue/chroot/var/run/bacula ];then
+mkdir -p /media/bs-rescue/chroot/var/run/bacula
+fi
+
+if [  -d /etc/bacula ];then
+rm -r /etc/bacula
+fi
+mkdir /etc/bacula
+
+
+if [ -f  working/diskinfo/bconsole.conf ];then
+
+cp working/diskinfo/bconsole.conf /etc/bacula
+../bin/bconsole.ermined < bcon > bconsole_output
+       cat bconsole_output |grep Version|awk '{print $5}'|grep 3.0
+       if [ $? = 0 ];then
+       cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-3.0.3 /media/bs-rescue/chroot/bacula-fd-static
+       fi
+               cat bconsole_output |grep Version|awk '{print $5}'|grep 2.4
+               if [ $? = 0 ];then
+               cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-2.4.4 /media/bs-rescue/chroot/bacula-fd-static
+               fi
+else
+
+$DIALOG --backtitle "If you want to connect to the director from this machine, \n you must provide a bconsole.conf , where is it ? \n (otherwise you can restore this client from another bconsole bat or bweb \n on another machine ) " --title "(spacebar to select)" --aspect 12 --begin 4 3 --fselect / 30 60 2>tmp
+    if [ $? = 1 ];then
+    $DIALOG --title "!!!!!!" --msgbox "No bconsole.conf, you will have to access your director \n from another machine and restore the directories \n that correspond to the drives you just formated" 30 60
+$DIALOG --radiolist "Which director version do you use ?:" 10 40 3 \
+        1 "  2.4.x" off \
+        2 "  3.0.x" off 2>ans
+       if [ $? = 1 ];then
+       exit 1
+       fi
+   
+                       version=`cat ans`
+                       if [ $version = "1" ];then
+                       cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-2.4.4 /media/bs-rescue/chroot/bacula-fd-static
+                       fi
+                               if [ $version = "2" ];then
+                               cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-3.0.3 /media/bs-rescue/chroot/bacula-fd-static
+                               fi
+       rm ans
+   fi
+               if [ -f tmp ];then
+               bakonf=`cat tmp`
+               rm tmp
+               else
+               bakonf=""
+               fi
+
+echo $bakonf |grep bconsole.conf
+  if [ $? = 0 ];then
+
+  cp $bakonf /etc/bacula
+  else
+ $DIALOG --radiolist "Which director version do you use ?:" 10 40 3 \
+        1 "  2.4.x" off \
+        2 "  3.0.x" off 2>ans
+       if [ $? = 1 ];then
+       exit 1
+       fi
+    fi
+               version=`cat ans`
+               if [ $version = "1" ];then
+               cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-2.4.4 /media/bs-rescue/chroot/bacula-fd-static
+               fi
+                       if [ $version = "2" ];then
+                       cp /media/bs-rescue/bacula-rescue/bin/bacula-fd-static-3.0.3 /media/bs-rescue/chroot/bacula-fd-static
+                       fi
+                       rm ans
+
+
+  fi
+chroot /media/bs-rescue/chroot /bacula-fd-static -c /bacula-fd.conf &
+df |grep /media/bs-rescue/chroot |grep -v /media/bs-rescue/chroot/ >/dev/null 2>&1
+if [ $? = 1 ];then
+df |grep /media/bs-rescue/chroot >tmp 
+place=`cat tmp|awk '{print $6}'|cut -c 24-1000`
+if [ -f tmp2 ];then
+rm tmp2
+touch tmp2
+fi
+       df |grep /media/bs-rescue/chroot >tmp 
+       place=""
+               cat tmp|while read line;do
+               b=`echo $line|awk '{print $6}'|cut -c 24-1000`
+                       if [ ! $b = "" ];then
+                       placet=`echo $b`
+                       
+                       else
+                       lv=`df |grep mapper`
+                       placet=`df $lv|grep media|awk '{print $5}'|cut -c 24-1000`
+                       
+                               
+                               
+       
+                       fi
+                                if [ -f tmp2 ];then
+                                 cat tmp2|grep $placet
+                                 if [ ! $? = 0 ];then
+                                 echo  $placet>>tmp2
+                                 fi
+                                else
+                               echo  $placet>>tmp2
+                               fi
+
+               done
+
+place=`cat tmp2`
+rm tmp2
+
+
+
+
+
+$DIALOG --title "!!! WARNING !!!" --msgbox "Be carefull you didn't choose your root disk, so you must ONLY restore \n files that are situated on  \$ $place \n otherwise you would fill up this usb key instead of your disks \n \n \n But you still want to point to / (where to ?? >>>  / )" 30 60
+fi
+$DIALOG --title "!!! WARNING !!!" --msgbox "Now you must restore your files pointing to / \n We are faking that your disks are mounted on the root ( / ) \n \n \n If you restore your files anywhere else it wont work" 30 60
+if [ -f /etc/bacula/bconsole.conf ];then
+ ../bin/bconsole.ermined
+fi
+$DIALOG --title "PROCESSING" --msgbox "Please press ok when your job is done" 30 60
+if [ -d /media/bs-rescue/chroot/boot/grub ];then
+$DIALOG --title "Install GRUB ?" --yesno "You seem to have GRUB installed on this disk, \n Do you want to run install-grub (grub 1) on this disk ? \n (we will back up the grub dir in grub.bak in case something goes wrong)" 30 60 
+if [ $? = 0 ];then
+grubdisk=`df |grep /media/bs-rescue/chroot |grep -v /media/bs-rescue/chroot/ |awk '{print $1}'`
+cp -r /media/bs-rescue/chroot/boot/grub /media/bs-rescue/chroot/boot/grub.bak
+grub-install --root-directory=/media/bs-rescue/chroot/boot/grub $grubdisk
+fi
+fi
+$DIALOG --title "THAT'S IT" --msgbox "That's it , we're all done \n \n \n Enjoy !!!" 30 60
+if [ -f added_disks ];then
+rm added_disks
+fi
+if [ -f alldisks ];then
+rm alldisks
+fi
+
+if [ -f ans ];then
+rm ans
+fi
+
+if [ -f badblocksnoprompt ];then
+rm badblocksnoprompt
+fi
+
+if [ -f noprompt ];then
+rm noprompt
+fi
+
+if [ -f clientmp ];then
+rm clientmp
+fi
+
+
+if [ -f dialogtest ];then
+rm dialogtest
+fi
+
+if [ -f disklist ];then
+rm disklist
+fi
+
+if [ -f fulldisks ];then
+rm fulldisks
+fi
+
+if [ -d working ];then
+rm -r working
+fi
+
+if [ -f mount_drives ];then
+rm mount_drives
+fi
+
+if [ -f tmp ];then
+rm tmp
+fi
+ pid=`ps -ax|grep ermine|grep -v grep|awk '{print $1}'`
+if [ ! $pid = "" ];then
+kill $pid
+fi
+lsof |grep /media/bs-rescue/chroot|awk '{print $2}'|while read line ;do
+if [ ! $line = "" ];then
+kill $line
+fi
+done