#!/usr/bin/perl # created /usr/share/perl5/File/Size.pm from http://search.cpan.org/src/OFER/File-Size-0.06/lib/File/Size.pm # created /usr/share/perl5/Number/Bytes/Human.pm from http://search.cpan.org/src/FERREIRA/Number-Bytes-Human-0.07/Human.pm use DBI; use File::Size; $dbname = "user_acl"; $host = "localhost"; $port = "5432"; $username = "somename"; $password = "********"; $connect = DBI->connect( "dbi:Pg:dbname=$dbname;host=$host;port=$port", "$username", "$password" ) or die "Unable to connect: $DBI::errstr\n"; $query = "SELECT DISTINCT ON (email_info.directory) email_addresses.email_name, email_addresses.domain, email_info.directory FROM email_addresses, email_info WHERE email_addresses.user_resource_id = email_info.id"; $query_handle = $connect->prepare($query); $query_handle->execute(); open LOGFILE, ">/root/scripts/folderSize/folderSize.log"; while ( @pgData = $query_handle->fetchrow() ) { $directory = @pgData[2]; $email_name = sprintf("%-38s", @pgData[0]. "@" . @pgData[1]); my $obj = File::Size->new( dir => $directory, blocksize => 1024, followsymlinks => 0, humanreadable => 0 ); $size = sprintf("%-12s", $obj->getsize() ); print LOGFILE "$size $email_name $directory\n"; } close LOGFILE; exec ("sort -rn /root/scripts/folderSize/folderSize.log | head -30 | mail -s \"Mail Top 30 Directory Sizes\" somewhere\@nothere.com");