X-Git-Url: https://git.sur5r.net/?p=bacula%2Frescue;a=blobdiff_plain;f=rescue%2Flinux%2Fusb%2Fsrc%2Fscripts%2Fchrootscript;fp=rescue%2Flinux%2Fusb%2Fsrc%2Fscripts%2Fchrootscript;h=00bc665db7074a23297eccfb2cb114e3d848dd5d;hp=0000000000000000000000000000000000000000;hb=4dd8d7fe401088b31113cd54fc0cc87ae121c971;hpb=fb21b5066e01a80263767f2406829a10dfa58303 diff --git a/rescue/linux/usb/src/scripts/chrootscript b/rescue/linux/usb/src/scripts/chrootscript new file mode 100755 index 0000000..00bc665 --- /dev/null +++ b/rescue/linux/usb/src/scripts/chrootscript @@ -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