Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ## usual list of folders
- #######################################################################
- foldersList=($( ls -l /media_lib/ | grep '^d' | grep -v 'vmware_new' | awk '{ pr
- int $9 }' ))
- #######################################################################
- ## special list of olders
- #######################################################################
- specialFoldersList[0]="gartner"
- specialFoldersList[1]="symantec"
- specialFoldersList[2]="TrilliumFiles"
- specialFoldersList[3]="vmware"
- specialFoldersList[4]="bureau"
- specialFoldersList[5]="ABI"
- specialFoldersList[6]="microsoft"
- specialFoldersList[7]="omni"
- specialFoldersList[8]="hewlett-packard"
- specialFoldersList[9]="IBM-BAU"
- specialFoldersList[10]="cisco"
- specialFoldersList[11]="rcdi"
- specialFoldersList[12]="sym_glob"
- ########################################################################
- ## paths to output files
- ###########################################################################
- path=$(pwd)
- outputUsualFoldersFile="$path/outputUsualDir.txt"
- outputUsualFoldersFile="$path/outputUsualDir.txt"
- outputSpecialFoldersFile="$path/outputSpecialDir.txt"
- ###########################################################################
- typeset -i countFoldersList=${#foldersList[*]}
- typeset -i countSpecialFoldersList=${#specialFoldersList[*]}
- # number of lines to display
- displayNoLines=15
- percentLimitForWarning=75
- # giga=1024*1024*2
- giga=2097152
- ## Convert input parameter (number of bytes) to Human Readable form
- ################################################################################
- ######################
- bytesToHR()
- {
- sizeList="KB,MB,GB,TB"
- power=1
- val=$( echo "scale=2; $1 / 1" | bc)
- valInt=$( echo $val / 1024 | bc )
- while [ $valInt -gt 0 ]
- do
- let power=power+1
- val=$( echo "scale=2; $val / 1024" | bc)
- valInt=$( echo $val / 1024 | bc )
- done
- echo $val$( echo $sizeList | cut -f$power -d, )
- }
- ################################################################################
- #######################
- ## Creating files with list of folders
- ################################################################################
- #######################
- make_list_of_folders(){
- # get minim size to display
- minSizeSpecial=0
- minSizeUsual=0
- actualSize=0
- # create folders with all the sizes
- for (( i=0 ; i < countFoldersList ; i++ )) do
- for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
- echo "Comperring : ${foldersList[$i]} == ${specialFoldersList[$j]}"
- if [[ "${foldersList[$i]}" == "${specialFoldersList[$j]}" ]]; then
- echo "Match has been found: ${specialFoldersList[$j]}"
- while read RECORD
- do
- actualSize=$(echo $RECORD | awk '{ print$1 }')
- echo $actualSize >> tempSizesSpecial.txt
- j=$countSpecialFoldersList
- done < <(du /media_lib/${specialFoldersList[$j]}/ | egrep -v '.*/.*/.*/.*/.*/.*/.*/.*/')
- else
- if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
- while read RECORD
- do
- actualSize=$(echo $RECORD | awk'{ print $1 }')
- echo $actualSize >> tempSizesUsual.txt
- done < <(du /media_lib/${foldersList[$i]}/ | egrep -v '.*/.*/.*/')
- fi
- fi
- done
- done
- # sort the sizes
- cat tempSizesSpecial.txt | sort -rnk1 >> tempSizesSpecialSorted.txt
- rm tempSizesSpecial.txt
- cat tempSizesUsual.txt | sort -rnk1 >> tempSizesUsualSorted.txt
- rm tempSizesUsual.txt
- # get the no position size
- minSizeSpecial=`sed -n "${displayNoLines}p" tempSizesSpecialSorted.txt`
- minSizeUsual=`sed -n "${displayNoLines}p" tempSizesUsualSorted.txt`
- # delete temporary files
- rm tempSizesSpecialSorted.txt
- rm tempSizesUsualSorted.txt
- # create files with folders that have size >= then min limit size
- for (( i=0 ; i < countFoldersList ; i++ )) do
- for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
- echo "Comperring : ${foldersList[$i]} == ${specialFoldersList[$j]}"
- if [[ "${foldersList[$i]}" == "${specialFoldersList[$j]}" ]]; then
- echo "Match has been found: ${specialFoldersList[$j]}"
- while read RECORD
- do
- actualSize=$(echo $RECORD | awk '{ print$1 }')
- actualName=$(echo $RECORD | awk '{ print$2 }')
- if [ $actualSize -ge $minSizeSpecial ];then
- echo $RECORD >> $1
- j=$countSpecialFoldersList
- fi
- done < <(du /media_lib/${specialFoldersList[$j]}/ | egrep -v '.*/.*/.*/.*/.*/.*/.*/.*/')
- else
- if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
- while read RECORD
- do
- actualSize=$(echo $RECORD | awk'{ print $1 }')
- if [ $actualSize -ge $minSizeUsual ]; then
- echo $RECORD >> $2
- fi
- done < <(du /media_lib/${foldersList[$i]}/ | egrep -v '.*/.*/.*/')
- fi
- fi
- done
- done
- # sort files
- cat $1 | sort -rnk1 >> tempFinalSizesSpecialSorted.txt
- rm $1
- mv tempFinalSizesSpecialSorted.txt $1
- # eliminate special folder from usual folders list
- while read LINE
- do
- word2=$(echo $LINE | awk '{ print $2 }')
- for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
- if [[ "$word2" == "/media_lib/${specialFoldersList[$j]}"]]; then
- break;
- else
- if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
- echo $LINE >> outputUsualFoldersFileGoodTemp.txt
- fi
- fi
- done
- done < $outputUsualFoldersFile
- rm $2
- mv outputUsualFoldersFileGoodTemp.txt $2
- # sort files
- cat $2 | sort -rnk1 >> tempFinalSizesUsualSorted.txt
- rm $2
- mv tempFinalSizesUsualSorted.txt $2
- }
- ################################################################################
- ########################
- ## send files by email
- ################################################################################
- #######################
- send_files_by_email(){
- # file to hold the email content
- mailBody="mailbody.txt"
- outMail="out.mail"
- # Declare Email Subject
- month=`date +%B`
- day=`date +%d`
- case "$day" in
- 01) th='st'
- ;;
- 02) th='nd'
- ;;
- 03) th='rd'
- ;;
- 21) th='st'
- ;;
- 22) th='nd'
- ;;
- 23) th='rd'
- ;;
- 31) th='st'
- ;;
- *) th='th'
- ;;
- esac
- SUBJECT="Folders size situation from media_lib on $day$th $month"
- # Declare Reciever's Email Id
- # EMAIL1="daniel.burlacu@hartehanks.com"
- # EMAIL1="marian.gheorghiu@hartehanks.com"
- EMAIL2="Pradeepa.Maheshkumar@hartehanks.com"
- # #EMAIL3="Richard.Cliff@hartehanks.com"
- EMAIL4="Billy.Lau@hartehanks.com"
- EMAIL5="Nitin.Wadhwa@hartehanks.com"
- EMAIL6="Nigel.Pratt@hartehanks.com"
- EMAIL7="Daniel.Burlacu@hartehanks.com"
- EMAIL="$EMAIL2 $EMAIL4 $EMAIL5 $EMAIL6 $EMAIL7"
- # EMAIL="$EMAIL1"
- ## Removing output files of the script from previous run
- rm -f $outMail
- ## Remove the message body and sent files used in previous versions
- rm -f $mailBody
- ## Create the mail body message in a text file
- ## Initialize the text file
- cat /dev/null > $mailBody
- # Write the email body text to a file - mailbody.txt
- echo "Hi User," >> $mailBody
- percent=`df -h /media_lib | awk '{ print $5 }' | tail -1 | cut -d '%' -f1`
- if [ $percent -ge $percentLimitForWarning ]; then
- echo "" >> $mailBody
- echo "**********************************************************************" >> $mailBody
- echo "** WARNING media_lib getting full, please delete now!!!! ">> $mailBody
- echo "** Used Drive Space is $percent% " >> $mailBody
- echo "**********************************************************************" >> $mailBody
- else
- echo "" >> $mailBody
- echo "**********************************************************************" >> $mailBody
- echo "** Used Drive Space is $percent% " >> $mailBody
- echo "**********************************************************************" >> $mailBody
- fi
- #outputUsualDir.txt
- echo "" >> $mailBody
- echo "== Normal Directories ==" >> $mailBody
- echo "" >> $mailBody
- while read LINE
- do
- word1=$(echo $LINE | awk '{ print $1 }')
- word2=$(echo $LINE | awk '{ print $2 }')
- # word1HR=$(bytesToHR $word1)
- word1HR=$(du -hs $word2 | awk '{ print $1 }')
- #find old size
- oldExist=0
- oldSize=""
- if [ -s $2 ]; then
- if [ $word1 -ge $giga ]; then
- # read old file (existing) and get size to see if new size increased
- while read OLD_LINE
- do
- oldWord1=$(echo $OLD_LINE | awk '{ print$1 }')
- oldWord2=$(echo $OLD_LINE | awk '{ print$2 }')
- if [ $word2 == $oldWord2 ]; then
- oldExist=1
- oldSize=$oldWord1
- break;
- else
- oldExist=0
- fi
- done < $4
- # if new size increased with more than 1G then display that increases with difference
- difference=`echo "$word1-$oldSize" | bc`
- if [ $oldExist -eq 1 ] && [ $difference -gt $giga ]; then
- differenceHalf=`echo "$difference/2" | bc`
- differenceHR=$(bytesToHR $differenceHalf)
- differenceFinal="(increased_by__$differenceHR)"
- word1HR=$(du -hs $word2 | awk '{ print $1 }')
- printf "%-20s %-50s %-60s " $word1HR $word2 $differenceFinal>> $mailBody
- echo "" >> $mailBody
- else
- printf "%-20s %-50s " $word1HR $word2>>$mailBody
- echo "" >> $mailBody
- fi
- fi
- else
- if [ $word1 -ge $giga ]; then
- printf "%-20s %-50s " $word1HR $word2 >> $mailBody
- echo "" >> $mailBody
- fi
- fi
- done < $2
- #outputSpecialDir.txt
- echo "" >> $mailBody
- echo "== Special Directories ==" >> $mailBody
- echo "" >> $mailBody
- while read LINE
- do
- word1=$(echo $LINE | awk '{ print $1 }')
- word2=$(echo $LINE | awk '{ print $2 }')
- word1HR=$(du -hs $word2 | awk '{ print $1 }')
- #find old size
- oldExist=0
- oldSize=""
- if [ -s $2 ]; then
- if [ $word1 -ge $giga ]; then
- # read old file (existing) and get size to see if new size increased
- while read OLD_LINE
- do
- oldWord1=$(echo $OLD_LINE | awk '{ print $1 }')
- oldWord2=$(echo $OLD_LINE | awk '{ print $2 }')
- if [ $word2 == $oldWord2 ]; then
- oldExist=1
- oldSize=$oldWord1
- break;
- else
- oldExist=0
- fi
- done < $3
- # if new size increased with more than 1G then display that increases with difference
- difference=`echo "$word1-$oldSize" | bc`
- if [ $oldExist -eq 1 ] && [ $difference -gt $giga ]; then
- differenceHalf=`echo "$difference/2" | bc`
- differenceHR=$(bytesToHR $differenceHalf)
- differenceFinal="(increased_by__$differenceHR)"
- #word1HR=$(bytesToHR $word1)
- word1HR=$(du -hs $word2 | awk '{ print $1 }')
- printf "%-20s %-50s %-60s " $word1HR $word2 $differenceFinal>> $mailBody
- echo "" >> $mailBody
- else
- printf "%-20s %-50s " $word1HR $word2>>$mailBody
- echo "" >> $mailBody
- fi
- fi
- else
- if [ $word1 -ge $giga ]; then
- printf "%-20s %-50s " $word1HR $word2 >> $mailBody
- echo "" >> $mailBody
- fi
- fi
- done < $1
- echo "" >> $mailBody
- echo "" >> $mailBody
- echo "**********************************************************************" >> $mailBody
- df -h /media_lib >> $mailBody
- echo "**********************************************************************" >> $mailBody
- echo "" >> $mailBody
- echo "Regards." >>$mailBody
- ## Sending email using mail command
- cat $mailBody > $outMail
- # Send the email, assuming that the Email Subject and
- # the Email Address are in their respective
- # variables - $SUBJECT and $EMAIL.
- mailx -s "$SUBJECT" "$EMAIL" < $outMail
- echo "Email sent."
- echo "Used Drive Space is $percent%"
- }
- ############################################################################
- ## Main Program
- ############################################################################
- if [ -s $outputUsualFoldersFile ] && [ -s $outputSpecialFoldersFile ]; then
- echo "Files are available !!!"
- outputSpecialDirTemp="outputSpecialDirTemp.txt"
- outputUsualDirTemp="outputUsualDirTemp.txt"
- # create copy for old output files
- oldOutputSpecialFoldersFile="oldOutputSpecialFoldersFile.txt"
- oldOutputUsualFoldersFile="oldOutputUsualFoldersFile.txt"
- mv $outputSpecialFoldersFile $oldOutputSpecialFoldersFile
- mv $outputUsualFoldersFile $oldOutputUsualFoldersFile
- #create new files to replace the old one
- make_list_of_folders $outputSpecialFoldersFile $outputUsualFoldersFile
- #send email
- echo "build email..."
- send_files_by_email $outputSpecialFoldersFile $outputUsualFoldersFile $oldOutputSpecialFoldersFile $oldOutputUsualFoldersFile
- chmod 777 oldOutputSpecialFoldersFile.txt
- rm $oldOutputSpecialFoldersFile
- rm $oldOutputUsualFoldersFile
- else
- echo "Files are not available !!!"
- make_list_of_folders $outputSpecialFoldersFile $outputUsualFoldersFile
- #send email
- echo "build email..."
- send_files_by_email
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement