#!/usr/bin/perl ### ### BloatDetector.pl v0.1 written 031405:1749 by BJP ### ### Builds a report showing the top 100 biggest-sized files, excluding ### oracle stuff, backups, etc... Thats what the back|archiv|ora exclusion stuff does. :) ### use Mail::Sendmail; $reportFile="/tmp/bloatdetector.tmp"; $recipient="youremailaddress\@goes.here.com"; chomp($hostName=`hostname`); # $HOSTNAME is non-ubiquitous. Ugh. $sender=$ENV{"USER"}."\@".$hostName; chomp($dateStamp=`date`); print "BloatDetector: Recipient is [$recipient]\n"; print "BloatDetector: Sender is [$sender]\n"; print "BloatDetector: Scanning files..This may take a while.\n"; @bloatedFiles = `find / -depth -size +8192 -ls| grep -i -v -E \"back|archiv|ora?\"| sort -r -n +6 | cut -d" " -f2- | head -n100`; open(FILE,"+>>$reportFile") or die ("BloatDetector: Can't open temporary logfile. My life was short, yet sweet -- grieve not for me, my friend."); print "BloatDetector: Preparing report..\n"; print FILE "\n\n\nHere's the latest BloatDetector report from $hostName..\n\n"; foreach $line (@bloatedFiles) { print FILE "$line"; } chomp($endTime=`date`); print FILE "\n\n"; print FILE "Time invoked : $dateStamp\n"; print FILE "Time completed : $endTime"; close(FILE); open(REPORT,$reportFile); @report = ; chomp(@report); close(REPORT); %mail=( To => $recipient, From => $sender, Subject => "BloatDetector Results for ".$dateStamp." from ".$sender, Message => join("\n",@report)); print "BloatDetector: Sending report..\n"; sendmail(%mail); # a-la-peanut-butter-sandwiches! print "BloatDetector: Exiting..\n"; unlink $reportFile;