BASH   59

psu12installer.sh

Guest on 5th September 2021 05:45:48 PM

  1. #!/bin/bash
  2. function TESTZ {
  3. TMPDIR="/tmp/mytmp"
  4. if [ -d ${TMPDIR} ]; then
  5.    rm -rf ${TMPDIR}
  6. fi
  7. mkdir -p ${TMPDIR}
  8.  
  9. ### HDD LIST ###
  10. TMP1="${TMPDIR}/tmp1.tmp" # HDD List and Found All
  11. TMP2="${TMPDIR}/dialog-tmp2.tmp"
  12. TMP3="${TMPDIR}/tmp3.tmp" # Result of Dialog
  13. TMP4="${TMPDIR}/tmp4.tmp" # Keep Selected Disk, Find any DATA
  14. TMP5="${TMPDIR}/mysize-tmp5.tmp" # Keep Size of Disk and Found DATA in STORAGE
  15. TMP6="${TMPDIR}/mntfindhd-tmp6.tmp" # Found DATA in CD/DVD-ROM
  16. MENUID="${TMPDIR}/menuid.tmp"
  17. TMPALL="${TMPDIR}/*.tmp"
  18. HDD="${TMPDIR}/hdd.tmp"
  19. SIZE="${TMPDIR}/size.tmp"
  20. MYMNT="/mnt/custom"
  21. MYMNTz="/mnt/backup"
  22.  
  23. DIALOG="--backtitle Install-PSU-12"
  24. MSG="${DIALOG} --menu \"Select Your Hard Disk\" 0 45 0 "
  25. echo -n "${MSG}" > ${TMP2}
  26.  
  27. fdisk -l | grep "^Disk /dev" | awk '{print $2,$3,$4}' | sed "s/,//g" | sed "s/://g" | sed "s/ / /g" > ${TMP1}
  28. COUNT=$(grep -c "/dev" ${TMP1})
  29. for ((i=1;i<=${COUNT};i++)) ; do
  30.      read HD
  31.      MYDISK=$(echo "${HD}" | awk '{print $1}')
  32.      MYSIZE=$(echo "${HD}" | awk '{print $2,$3}')
  33.      echo "MENU${i}:${MYDISK}" >> ${TMP4}
  34.      echo "MENU${i}:${MYSIZE}" >> ${TMP5}
  35.      HDZ=$(echo "${HD}" | sed "s/\/dev\//DATA Storage in /g")
  36.      echo -n " \"${i}\" \"${HDZ}\" " >> ${TMP2}
  37. done < ${TMP1}
  38. cat /dev/null > ${TMP1}
  39. while true ; do
  40.    dialog --file ${TMP2} 2>${TMP3}
  41.    HD=$?
  42.    if [ "${HD}" != "0" ]; then
  43.       rm -f ${TMPALL}
  44.       exit    
  45.    fi
  46.    HD=$(cat ${TMP3})
  47.    
  48.    while true ; do
  49.       dialog ${DIALOG} --title "ARE YOU SURE TO INSTALL ?" --inputbox "The DATA in your HDD that you selected will be LOST (YES/NO)" 9 59 2>${TMP3}
  50.       AGREE=$?
  51.       if [ "${AGREE}" != "0" ]; then
  52.          rm -f ${TMPALL}
  53.       fi
  54.       AGREE=$(cat ${TMP3})
  55.  
  56.       case "${AGREE}" in
  57.          YES)
  58.             grep "MENU${HD}" ${TMP4} | cut -d':' -f2 > ${HDD}
  59.             grep "MENU${HD}" ${TMP5} | cut -d':' -f2 | sed "s/ //g" | sed "s/B//g" > ${SIZE}
  60.             cat /dev/null > ${TMP4}
  61.             cat /dev/null > ${TMP5}
  62.             ### Networking ###
  63.             CHKLAN=$(mii-tool | grep -c "ok")
  64.             if [ ${CHKLAN} -eq 1 ]; then
  65.                echo "dhcpcd eth0"
  66.                dhcpcd eth0
  67.                echo "ntpdate time.psu.ac.th"
  68.                ntpdate time.psu.ac.th
  69.                echo
  70.                ifconfig | grep "inet addr" | grep -v "127.0.0.1"
  71.                echo
  72.                wget --spider ftp://ftp.psu.ac.th/pub/psu-open-server/psu-12.tgz -o ${TMP4}
  73.                NC=$(cat ${TMP4} | grep " psu-12.tgz " | awk '{print $3}' | grep -c ".")
  74.                if [ ${NC} -eq 1 ]; then
  75.                   echo
  76.                   echo "Found psu-12.tgz on Networking"
  77.                   echo
  78.                   echo "1:to Install From Network" >> ${TMP1}
  79.                fi
  80.             fi
  81.             ### ========== ###
  82.             ### DATASTORAGE ###
  83.             fdisk -l | grep "^/dev" | grep -v "swap" | grep -v "Ext" | awk '{print $1}' | sed "s/\// /g" | awk '{print $2}' > ${TMP4}
  84.  
  85.             CHKMNT=$(df | grep -c "${MYMNT}")
  86.             if [ ${CHKMNT} -eq 1 ]; then
  87.                df | grep "${MYMNT}"
  88.                echo "umount ${MYMNT}"
  89.                umount ${MYMNT}
  90.             fi
  91.  
  92.             while read DEV ; do
  93.                echo "mount -r /dev/${DEV} ${MYMNT}"
  94.                mount -r /dev/${DEV} ${MYMNT}
  95.                find / -mindepth 3 -maxdepth 3 -name "psu-12.tgz" | sed "s/^\//(on \/dev\/${DEV} ) \//g" >> ${TMP5}
  96.                echo "umount /dev/${DEV}"
  97.                umount /dev/${DEV}
  98.             done < ${TMP4}
  99.  
  100.             HC=$(cat ${TMP5} | grep -c ".")
  101.             if [ ${HC} -gt 0 ]; then
  102.                echo
  103.                cat ${TMP5}
  104.                echo
  105.                awk '{print $1,$2}' ${TMP5} | sed "s/(on/2:to Install From/g" | cut -d')' -f1 >> ${TMP1}
  106.             fi
  107.  
  108.             ####################
  109.  
  110.             ### CD/DVD-ROM ###
  111.             dmesg | grep -w "CD-ROM sr[0-9]" | awk '{print $8}' > ${TMP4}
  112.             CHKCDMNT=$(df | grep -c "${MYMNT}")
  113.             if [ ${CHKCDMNT} -eq 1 ]; then
  114.                df | grep "${MYMNT}"
  115.                echo "umount ${MYMNT}"
  116.                umount ${MYMNT}
  117.             fi
  118.  
  119.             echo "Now Search Your CD/DVD-ROM Drive..."
  120.             while read SR ; do
  121.                mount -r /dev/${SR} ${MYMNT}
  122.                find / -mindepth 3 -maxdepth 3 -name "psu-12.tgz" | sed "s/^\//(on \/dev\/${SR} ) \//g" >> ${TMP6}
  123.                umount /dev/${SR}
  124.             done < ${TMP4}
  125.  
  126.             CD=$(cat ${TMP6} | grep -c ".")
  127.             if [ ${CD} -gt 0 ]; then
  128.                echo
  129.                cat ${TMP6}
  130.                echo
  131.                echo "3:Install From CD/DVD-ROM" >> ${TMP1}
  132.             fi
  133.             ### ====== ###
  134.  
  135.             MSGZ="${DIALOG} --title \"Do you want to install from ?\" --menu \"You Selected : $(cat ${HDD}) to Install\" 0 45 0 "
  136.             echo -n "${MSGZ}" > ${TMP2}
  137.             COUNT=$(cat ${TMP1} | grep -c ".")
  138.             for ((i=1;i<=${COUNT};i++)) ; do
  139.                read MENU
  140.                echo "MENU${i}:${MENU}" >> ${MENUID}
  141.                MENUZ=$(echo "${MENU}" | cut -d':' -f2)
  142.                echo -n " \"${i}\" \"${MENUZ}\" " >> ${TMP2}
  143.             done < ${TMP1}
  144.             while true ; do
  145.                dialog --file ${TMP2} 2>${TMP3}
  146.                ID=$?
  147.                if [ "${ID}" != "0" ]; then
  148.                   rm -f ${TMPALL}
  149.                   exit
  150.                fi
  151.                ID=$(cat ${TMP3})
  152.                case "${ID}" in
  153.                [1-9])
  154.                while true ; do
  155.                   dialog ${DIALOG} --title "ARE YOU SURE TO INSTALL ?" --inputbox "Are you sure to install in $(cat ${HDD}) The DATA in your $(cat ${HDD}) will be LOST ! \n This is The FINAL of your DECISION Please Type \n \"YES\" to Install \n \"NO\"  to Exit \n \"BACK\" to Select Your HDD again " 15 59 2>${TMP3}
  156.                   AGREE=$?
  157.                   if [ "${AGREE}" != "0" ]; then
  158.                      rm -f ${TMPALL}
  159.                   fi
  160.                   AGREE=$(cat ${TMP3})
  161.  
  162.                   case "${AGREE}" in
  163.                   YES)
  164.                       function DCMHDD {
  165.                          MYDISK=$(cat ${HDD})
  166.                          END=$(expr $(cat ${SIZE} | cut -d'.' -f1) - 2)
  167.                          ENDZ=$(cat "${SIZE}")
  168.  
  169.                          echo "dd if=/dev/zero of=${MYDISK} bs=512 count=63"
  170.                           dd if=/dev/zero of=${MYDISK} bs=512 count=63
  171.                          echo "parted -s ${MYDISK} mktable msdos"
  172.                           parted -s ${MYDISK} mktable msdos
  173.                          sleep 1
  174.                          echo "parted -s -a cylinder ${MYDISK} mkpart primary ext2 1 ${END}G"
  175.                           parted -s -a cylinder ${MYDISK} mkpart primary ext2 1 ${END}G
  176.                          sleep 1
  177.                          echo "parted -s ${MYDISK} mkpart primary linux-swap ${END}G ${ENDZ}"
  178.                          parted -s ${MYDISK} mkpart primary linux-swap ${END}G ${ENDZ}
  179.                          sleep 1
  180.                          echo "mkfs /dev/sda1"
  181.                           mkfs /dev/sda1
  182.                          echo "mount /dev/sda1 ${MYMNT}"
  183.                           mount /dev/sda1 ${MYMNT}
  184.                       }
  185.                       function GRUB2 {
  186.                          echo "sh ${MYMNT}/home/mama/install-grub2.sh"
  187.                          sh ${MYMNT}/home/mama/install-grub2.sh
  188.                          echo "umount /dev/sda1"
  189.                           umount /dev/sda1
  190.                       }
  191.                       function INST {
  192.                          echo "mount -r ${FOUND} ${MYMNTz}"
  193.                           mount -r ${FOUND} ${MYMNTz}
  194.                          echo "tar -zxvf ${MYMNTz}/psu-12.tgz -C ${MYMNT}"
  195.                           tar -zxvf ${MYMNTz}/psu-12.tgz -C ${MYMNT}
  196.                          echo "umount ${MYMNTz}"
  197.                           umount ${MYMNTz}
  198.                       }
  199.                       MID=$(grep "MENU${ID}" ${MENUID} | cut -d':' -f2)
  200.                       if [ ${MID} -eq 1 ]; then
  201.                          DCMHDD
  202.                          echo "wget http://ftp.psu.ac.th/pub/psu-open-server/psu-12.tgz -O - | tar -zxp -C ${MYMNT}"
  203.                          wget http://ftp.psu.ac.th/pub/psu-open-server/psu-12.tgz -O - | tar -zxp -C ${MYMNT}
  204.                          GRUB2
  205.                          exit
  206.                       fi
  207.                       if [ ${MID} -eq 2 ]; then
  208.                           FOUND=$(cat ${TMP5} | awk '{print $2}')
  209.                           DCMHDD
  210.                           INST
  211.                           GRUB2
  212.                           exit
  213.                       fi
  214.                       if [ ${MID} -eq 3 ]; then
  215.                           FOUND=$(cat ${TMP6} | awk '{print $2}')
  216.                           DCMHDD
  217.                           INST
  218.                           GRUB2
  219.                           exit
  220.                       fi
  221.                       ;;
  222.                   NO)
  223.                       exit
  224.                       ;;
  225.                 BACK)
  226.                       TESTZ
  227.                       ;;
  228.                    *)
  229.                       continue
  230.                       ;;
  231.                   esac
  232.                done
  233.                   ;;
  234.                *)
  235.                   continue
  236.                   ;;
  237.                esac
  238.             done
  239.             ;;
  240.          NO)
  241.             exit
  242.             ;;
  243.           *)
  244.             continue
  245.             ;;
  246.       esac
  247.    done
  248. done
  249. }
  250. TESTZ

Raw Paste


Login or Register to edit or fork this paste. It's free.