manage_banks () { # This function is used to add and delete Dirvish banks # set -x # Uncomment to debug this function clear # Clear the screen` # Get a list of currently defined Dirvish banks BANK_LIST=$(parse_conf) # Display the screen header information echo -e "\n\n\tMANAGE DIRVISH BACKUP BANKS" echo -e "\n\nCurrently Configured Backup Bank(s):\n" NO_BANK=0 # If this is an initial installation there will not # be any Dirvish banks defined. if [ -z "$BANK_LIST" ] then NO_BANK=1 echo -e "\nNo Backup Banks Have Been Defined in Dirvish\n" else BANK_FILE=/tmp/backlist.out >$BANK_FILE COUNT=0 for B in $BANK_LIST do ((COUNT == COUNT + 1)) LAST_ENTRY=$B echo -e "\t$B" | tee -a $BANK_FILE done fi # Display the menu options echo -e "\n\n1) Add a New Backup Bank" echo -e "\n2) Delete a Current Backup Bank" echo -e "\n3) Return to the Previous Menu" echo -e "\n\nSelect an Option: \c" # Read the user input read OPT case $OPT in 1) # Add a New Backup Bank echo -e "\nEnter the Bank to Add: \c" read A_BANK echo -e "\nAdding New Backup Bank: $A_BANK" if (( NO_BANK == 0 )) then sed "s!$LAST_ENTRY!& \n\t${A_BANK}!g" $D_CONFIG > ${D_CONFIG}.modified if (( $? == 0 )) then # Save the old Dirvish master config file with today's datestamp cp ${D_CONFIG} ${D_CONFIG}.$(date +%m%d%Y) cp ${D_CONFIG}.modified ${D_CONFIG} echo -e "\n$A_BANK Successfully Added to Dirvish Master Config File" # Check to see if the $A_BANK directoey exists, if not # ask the user if it is okay to create it. chk_create_dir $A_BANK else echo -e "\nERROR: Adding $A_BANK Failed...See Administrator..." fi else if $(grep -q "bank:" $D_CONFIG) then # NOTICE: It is important to note that sed does not "require" # us to use / as a field separator. Here we are using ! as a # sed field separator because we are working with UNIX directory # paths, sed gets confused using / as a field separator. sed "s!bank:!& \n\t${A_BANK}!g" $D_CONFIG > ${D_CONFIG}.modified if (( $? == 0 )) then cp ${D_CONFIG} ${D_CONFIG}.$(date +%m%d%Y) cp ${D_CONFIG}.modified ${D_CONFIG} echo -e "\n$A_BANK Successfully Added to Dirvish Master Config File" chk_create_dir $A_BANK else echo -e "\nERROR: Adding $A_BANK Failed...See Administrator..." fi else echo -e "bank:\n\t$A_BANK" >> ${D_CONFIG}.modified if (( $? == 0 )) then cp ${D_CONFIG} ${D_CONFIG}.$(date +%m%d%Y) cp ${D_CONFIG}.modified ${D_CONFIG} echo -e "\n$A_BANK Successfully Added to Dirvish Master Config File" chk_create_dir $A_BANK else echo -e "\nERROR: Adding $A_BANK Failed...See Administrator..." fi fi fi rm -f $BANK_FILE echo -e "\nPress Enter to Continue...\c" read KEY ;; 2) echo -e "\nEnter the Backup Bank to Remove: \c" read R_BANK if [ -d $R_BANK ] then POPULATED=$(ls $R_BANK | wc -l) if (( POPULATED > 0 )) then echo -e "\nWARNING: The Bank $R_BANK has the Following Backup Images:\n" ls $R_BANK | more echo -e "\nAre you Sure you Want to Remove this Bank and all of the Backup Images? (y/n): \c" read ANS case $ANS in y|Y) continue ;; n|N) break ;; *) echo -e "\nInvalid Input..." ;; esac fi fi if $(cat "$BANK_FILE" | grep -q "$R_BANK") then if (( COUNT == 1 )) then echo -e "\nWARNING: $R_BANK is the Only Backup Bank Currently Configured!" echo -e "\nRemoving this Bank Will Cripple Dirvish..." fi echo -e "\nAre you Sure You Want to Remove the $R_BANK Bank? (y/n): \c" read ANS4 case $ANS4 in y|Y) cat $D_CONFIG | grep -v $R_BANK > ${D_CONFIG}.modified cp -p $D_CONFIG ${D_CONFIG}.bak.$(date +%m%d%y) cp ${D_CONFIG}.modified $D_CONFIG echo -e "\n$R_BANK Removed from the Dirvish Configuration File..." if [ -d $R_BANK ] then echo -e "\nDo You Want to Remove the $R_BANK Directory? (y/n): \c" read ANS case $ANS in y|Y) rm -r $R_BANK if (( $? == 0 )) then echo -e "\n$R_BANK Directory Removed Successully" else echo -e "\nERROR: Remove $R_BANK Directory Failed" fi ;; n|N) echo -e "\nSkipping $R_BANK Directory Removal" ;; *) echo -e "\nInvalid Input..." ;; esac fi ;; n|N) echo -e "\nSkipping Bank Removal\n" ;; *) echo -e "\nInvalid Entry..." ;; esac else echo -e "\nERROR: $R_BANK is Not a Valid Bank" fi echo -e "\nPress Enter to Continue...\c" read KEY ;; 3) continue ;; *) echo -e "\nInvalid Entry...\n" ;; esac }