Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.88 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ## usual list of folders
  4. #######################################################################
  5. foldersList=($( ls -l /media_lib/ | grep '^d' | grep -v 'vmware_new' | awk '{ pr
  6. int $9 }' ))
  7. #######################################################################
  8.  
  9. ## special list of olders
  10. #######################################################################
  11. specialFoldersList[0]="gartner"
  12. specialFoldersList[1]="symantec"
  13. specialFoldersList[2]="TrilliumFiles"
  14. specialFoldersList[3]="vmware"
  15. specialFoldersList[4]="bureau"
  16. specialFoldersList[5]="ABI"
  17. specialFoldersList[6]="microsoft"
  18. specialFoldersList[7]="omni"
  19. specialFoldersList[8]="hewlett-packard"
  20. specialFoldersList[9]="IBM-BAU"
  21. specialFoldersList[10]="cisco"
  22. specialFoldersList[11]="rcdi"
  23. specialFoldersList[12]="sym_glob"
  24. ########################################################################
  25.  
  26. ## paths to output files
  27. ###########################################################################
  28. path=$(pwd)
  29. outputUsualFoldersFile="$path/outputUsualDir.txt"
  30. outputUsualFoldersFile="$path/outputUsualDir.txt"
  31. outputSpecialFoldersFile="$path/outputSpecialDir.txt"
  32.  
  33. ###########################################################################
  34.  
  35. typeset -i countFoldersList=${#foldersList[*]}
  36. typeset -i countSpecialFoldersList=${#specialFoldersList[*]}
  37. # number of lines to display
  38. displayNoLines=15
  39. percentLimitForWarning=75
  40. # giga=1024*1024*2
  41. giga=2097152
  42.  
  43. ## Convert input parameter (number of bytes) to Human Readable form
  44. ################################################################################
  45. ######################
  46. bytesToHR()
  47. {
  48. sizeList="KB,MB,GB,TB"
  49.  
  50. power=1
  51. val=$( echo "scale=2; $1 / 1" | bc)
  52. valInt=$( echo $val / 1024 | bc )
  53. while [ $valInt -gt 0 ]
  54. do
  55. let power=power+1
  56. val=$( echo "scale=2; $val / 1024" | bc)
  57. valInt=$( echo $val / 1024 | bc )
  58. done
  59. echo $val$( echo $sizeList | cut -f$power -d, )
  60. }
  61. ################################################################################
  62. #######################
  63.  
  64. ## Creating files with list of folders
  65. ################################################################################
  66. #######################
  67. make_list_of_folders(){
  68. # get minim size to display
  69. minSizeSpecial=0
  70. minSizeUsual=0
  71. actualSize=0
  72.  
  73. # create folders with all the sizes
  74. for (( i=0 ; i < countFoldersList ; i++ )) do
  75. for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
  76. echo "Comperring : ${foldersList[$i]} == ${specialFoldersList[$j]}"
  77. if [[ "${foldersList[$i]}" == "${specialFoldersList[$j]}" ]]; then
  78. echo "Match has been found: ${specialFoldersList[$j]}"
  79. while read RECORD
  80. do
  81. actualSize=$(echo $RECORD | awk '{ print$1 }')
  82. echo $actualSize >> tempSizesSpecial.txt
  83. j=$countSpecialFoldersList
  84. done < <(du /media_lib/${specialFoldersList[$j]}/ | egrep -v '.*/.*/.*/.*/.*/.*/.*/.*/')
  85. else
  86. if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
  87. while read RECORD
  88. do
  89. actualSize=$(echo $RECORD | awk'{ print $1 }')
  90. echo $actualSize >> tempSizesUsual.txt
  91. done < <(du /media_lib/${foldersList[$i]}/ | egrep -v '.*/.*/.*/')
  92. fi
  93. fi
  94. done
  95. done
  96. # sort the sizes
  97. cat tempSizesSpecial.txt | sort -rnk1 >> tempSizesSpecialSorted.txt
  98. rm tempSizesSpecial.txt
  99. cat tempSizesUsual.txt | sort -rnk1 >> tempSizesUsualSorted.txt
  100. rm tempSizesUsual.txt
  101.  
  102. # get the no position size
  103. minSizeSpecial=`sed -n "${displayNoLines}p" tempSizesSpecialSorted.txt`
  104. minSizeUsual=`sed -n "${displayNoLines}p" tempSizesUsualSorted.txt`
  105.  
  106. # delete temporary files
  107. rm tempSizesSpecialSorted.txt
  108. rm tempSizesUsualSorted.txt
  109.  
  110. # create files with folders that have size >= then min limit size
  111. for (( i=0 ; i < countFoldersList ; i++ )) do
  112. for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
  113. echo "Comperring : ${foldersList[$i]} == ${specialFoldersList[$j]}"
  114. if [[ "${foldersList[$i]}" == "${specialFoldersList[$j]}" ]]; then
  115. echo "Match has been found: ${specialFoldersList[$j]}"
  116. while read RECORD
  117. do
  118. actualSize=$(echo $RECORD | awk '{ print$1 }')
  119. actualName=$(echo $RECORD | awk '{ print$2 }')
  120. if [ $actualSize -ge $minSizeSpecial ];then
  121. echo $RECORD >> $1
  122. j=$countSpecialFoldersList
  123. fi
  124. done < <(du /media_lib/${specialFoldersList[$j]}/ | egrep -v '.*/.*/.*/.*/.*/.*/.*/.*/')
  125. else
  126. if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
  127. while read RECORD
  128. do
  129. actualSize=$(echo $RECORD | awk'{ print $1 }')
  130. if [ $actualSize -ge $minSizeUsual ]; then
  131. echo $RECORD >> $2
  132. fi
  133. done < <(du /media_lib/${foldersList[$i]}/ | egrep -v '.*/.*/.*/')
  134. fi
  135. fi
  136. done
  137. done
  138.  
  139. # sort files
  140. cat $1 | sort -rnk1 >> tempFinalSizesSpecialSorted.txt
  141. rm $1
  142. mv tempFinalSizesSpecialSorted.txt $1
  143.  
  144. # eliminate special folder from usual folders list
  145. while read LINE
  146. do
  147. word2=$(echo $LINE | awk '{ print $2 }')
  148. for (( j=0 ; j < countSpecialFoldersList ; j++ )) do
  149. if [[ "$word2" == "/media_lib/${specialFoldersList[$j]}"]]; then
  150. break;
  151. else
  152. if [ $j -eq $(($countSpecialFoldersList-1)) ]; then
  153. echo $LINE >> outputUsualFoldersFileGoodTemp.txt
  154. fi
  155. fi
  156. done
  157. done < $outputUsualFoldersFile
  158. rm $2
  159. mv outputUsualFoldersFileGoodTemp.txt $2
  160.  
  161. # sort files
  162. cat $2 | sort -rnk1 >> tempFinalSizesUsualSorted.txt
  163. rm $2
  164. mv tempFinalSizesUsualSorted.txt $2
  165.  
  166. }
  167. ################################################################################
  168. ########################
  169.  
  170.  
  171. ## send files by email
  172. ################################################################################
  173. #######################
  174. send_files_by_email(){
  175. # file to hold the email content
  176. mailBody="mailbody.txt"
  177. outMail="out.mail"
  178.  
  179. # Declare Email Subject
  180. month=`date +%B`
  181. day=`date +%d`
  182. case "$day" in
  183. 01) th='st'
  184. ;;
  185. 02) th='nd'
  186. ;;
  187. 03) th='rd'
  188. ;;
  189. 21) th='st'
  190. ;;
  191. 22) th='nd'
  192. ;;
  193. 23) th='rd'
  194. ;;
  195. 31) th='st'
  196. ;;
  197. *) th='th'
  198. ;;
  199. esac
  200. SUBJECT="Folders size situation from media_lib on $day$th $month"
  201.  
  202. # Declare Reciever's Email Id
  203. # EMAIL1="daniel.burlacu@hartehanks.com"
  204. # EMAIL1="marian.gheorghiu@hartehanks.com"
  205. EMAIL2="Pradeepa.Maheshkumar@hartehanks.com"
  206. # #EMAIL3="Richard.Cliff@hartehanks.com"
  207. EMAIL4="Billy.Lau@hartehanks.com"
  208. EMAIL5="Nitin.Wadhwa@hartehanks.com"
  209. EMAIL6="Nigel.Pratt@hartehanks.com"
  210. EMAIL7="Daniel.Burlacu@hartehanks.com"
  211. EMAIL="$EMAIL2 $EMAIL4 $EMAIL5 $EMAIL6 $EMAIL7"
  212. # EMAIL="$EMAIL1"
  213.  
  214. ## Removing output files of the script from previous run
  215. rm -f $outMail
  216. ## Remove the message body and sent files used in previous versions
  217. rm -f $mailBody
  218.  
  219. ## Create the mail body message in a text file
  220. ## Initialize the text file
  221. cat /dev/null > $mailBody
  222. # Write the email body text to a file - mailbody.txt
  223. echo "Hi User," >> $mailBody
  224.  
  225.  
  226. percent=`df -h /media_lib | awk '{ print $5 }' | tail -1 | cut -d '%' -f1`
  227. if [ $percent -ge $percentLimitForWarning ]; then
  228. echo "" >> $mailBody
  229. echo "**********************************************************************" >> $mailBody
  230. echo "** WARNING media_lib getting full, please delete now!!!! ">> $mailBody
  231. echo "** Used Drive Space is $percent% " >> $mailBody
  232. echo "**********************************************************************" >> $mailBody
  233. else
  234. echo "" >> $mailBody
  235. echo "**********************************************************************" >> $mailBody
  236. echo "** Used Drive Space is $percent% " >> $mailBody
  237. echo "**********************************************************************" >> $mailBody
  238. fi
  239.  
  240. #outputUsualDir.txt
  241. echo "" >> $mailBody
  242. echo "== Normal Directories ==" >> $mailBody
  243. echo "" >> $mailBody
  244.  
  245. while read LINE
  246. do
  247. word1=$(echo $LINE | awk '{ print $1 }')
  248. word2=$(echo $LINE | awk '{ print $2 }')
  249. # word1HR=$(bytesToHR $word1)
  250. word1HR=$(du -hs $word2 | awk '{ print $1 }')
  251. #find old size
  252. oldExist=0
  253. oldSize=""
  254. if [ -s $2 ]; then
  255. if [ $word1 -ge $giga ]; then
  256. # read old file (existing) and get size to see if new size increased
  257. while read OLD_LINE
  258. do
  259. oldWord1=$(echo $OLD_LINE | awk '{ print$1 }')
  260. oldWord2=$(echo $OLD_LINE | awk '{ print$2 }')
  261. if [ $word2 == $oldWord2 ]; then
  262. oldExist=1
  263. oldSize=$oldWord1
  264. break;
  265. else
  266. oldExist=0
  267. fi
  268. done < $4
  269.  
  270. # if new size increased with more than 1G then display that increases with difference
  271. difference=`echo "$word1-$oldSize" | bc`
  272. if [ $oldExist -eq 1 ] && [ $difference -gt $giga ]; then
  273. differenceHalf=`echo "$difference/2" | bc`
  274. differenceHR=$(bytesToHR $differenceHalf)
  275. differenceFinal="(increased_by__$differenceHR)"
  276. word1HR=$(du -hs $word2 | awk '{ print $1 }')
  277. printf "%-20s %-50s %-60s " $word1HR $word2 $differenceFinal>> $mailBody
  278. echo "" >> $mailBody
  279. else
  280. printf "%-20s %-50s " $word1HR $word2>>$mailBody
  281. echo "" >> $mailBody
  282. fi
  283. fi
  284. else
  285. if [ $word1 -ge $giga ]; then
  286. printf "%-20s %-50s " $word1HR $word2 >> $mailBody
  287. echo "" >> $mailBody
  288. fi
  289. fi
  290. done < $2
  291.  
  292. #outputSpecialDir.txt
  293. echo "" >> $mailBody
  294. echo "== Special Directories ==" >> $mailBody
  295. echo "" >> $mailBody
  296.  
  297. while read LINE
  298. do
  299. word1=$(echo $LINE | awk '{ print $1 }')
  300. word2=$(echo $LINE | awk '{ print $2 }')
  301. word1HR=$(du -hs $word2 | awk '{ print $1 }')
  302. #find old size
  303. oldExist=0
  304. oldSize=""
  305. if [ -s $2 ]; then
  306. if [ $word1 -ge $giga ]; then
  307. # read old file (existing) and get size to see if new size increased
  308. while read OLD_LINE
  309. do
  310. oldWord1=$(echo $OLD_LINE | awk '{ print $1 }')
  311. oldWord2=$(echo $OLD_LINE | awk '{ print $2 }')
  312. if [ $word2 == $oldWord2 ]; then
  313. oldExist=1
  314. oldSize=$oldWord1
  315. break;
  316. else
  317. oldExist=0
  318. fi
  319. done < $3
  320.  
  321. # if new size increased with more than 1G then display that increases with difference
  322. difference=`echo "$word1-$oldSize" | bc`
  323. if [ $oldExist -eq 1 ] && [ $difference -gt $giga ]; then
  324. differenceHalf=`echo "$difference/2" | bc`
  325. differenceHR=$(bytesToHR $differenceHalf)
  326. differenceFinal="(increased_by__$differenceHR)"
  327. #word1HR=$(bytesToHR $word1)
  328. word1HR=$(du -hs $word2 | awk '{ print $1 }')
  329. printf "%-20s %-50s %-60s " $word1HR $word2 $differenceFinal>> $mailBody
  330. echo "" >> $mailBody
  331. else
  332. printf "%-20s %-50s " $word1HR $word2>>$mailBody
  333. echo "" >> $mailBody
  334. fi
  335.  
  336. fi
  337. else
  338. if [ $word1 -ge $giga ]; then
  339. printf "%-20s %-50s " $word1HR $word2 >> $mailBody
  340. echo "" >> $mailBody
  341. fi
  342. fi
  343. done < $1
  344. echo "" >> $mailBody
  345. echo "" >> $mailBody
  346. echo "**********************************************************************" >> $mailBody
  347. df -h /media_lib >> $mailBody
  348. echo "**********************************************************************" >> $mailBody
  349. echo "" >> $mailBody
  350.  
  351. echo "Regards." >>$mailBody
  352. ## Sending email using mail command
  353. cat $mailBody > $outMail
  354. # Send the email, assuming that the Email Subject and
  355. # the Email Address are in their respective
  356. # variables - $SUBJECT and $EMAIL.
  357. mailx -s "$SUBJECT" "$EMAIL" < $outMail
  358. echo "Email sent."
  359. echo "Used Drive Space is $percent%"
  360. }
  361. ############################################################################
  362.  
  363.  
  364. ## Main Program
  365. ############################################################################
  366. if [ -s $outputUsualFoldersFile ] && [ -s $outputSpecialFoldersFile ]; then
  367. echo "Files are available !!!"
  368. outputSpecialDirTemp="outputSpecialDirTemp.txt"
  369. outputUsualDirTemp="outputUsualDirTemp.txt"
  370.  
  371. # create copy for old output files
  372. oldOutputSpecialFoldersFile="oldOutputSpecialFoldersFile.txt"
  373. oldOutputUsualFoldersFile="oldOutputUsualFoldersFile.txt"
  374. mv $outputSpecialFoldersFile $oldOutputSpecialFoldersFile
  375. mv $outputUsualFoldersFile $oldOutputUsualFoldersFile
  376.  
  377. #create new files to replace the old one
  378. make_list_of_folders $outputSpecialFoldersFile $outputUsualFoldersFile
  379.  
  380. #send email
  381. echo "build email..."
  382. send_files_by_email $outputSpecialFoldersFile $outputUsualFoldersFile $oldOutputSpecialFoldersFile $oldOutputUsualFoldersFile
  383. chmod 777 oldOutputSpecialFoldersFile.txt
  384. rm $oldOutputSpecialFoldersFile
  385. rm $oldOutputUsualFoldersFile
  386. else
  387. echo "Files are not available !!!"
  388. make_list_of_folders $outputSpecialFoldersFile $outputUsualFoldersFile
  389.  
  390. #send email
  391. echo "build email..."
  392. send_files_by_email
  393. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement