The attached file will calculate total kbytes of a dir using only perl...
-----Original Message-----
From: Joel Morgan <[EMAIL PROTECTED]>
To: '[EMAIL PROTECTED]' <[EMAIL PROTECTED]>
Date: Thursday, April 27, 2000 8:03 AM
Subject: RE: [IMail Forum] issue warnings to users approaching the
mailboxsize limit
>I haven't tested the script on Windows 2000 yet. The script relies heavily
>on the DIR command to get a list of mailboxes as well as the size. If
>Windows 2000 does this any differently than NT4 it will break. Will you
>verify this for me?
>
>When you issue the command "dir /ad C:\imail\users" what do you get? Can
you
>redirect it "> test.txt" and send it to me?
>
>For example on NT4 SP5, when the script issues the command to get a list of
>home directories:
>@lines = `dir /ad "$test_dir"`;
>
>which on my system is equivalent to "dir /ad E:\imail\users"
>
>It gets:
>
> Volume in drive E has no label.
> Volume Serial Number is 548A-792A
>
> Directory of e:\imail\users
>
>04/27/00 08:02a <DIR> .
>04/27/00 08:02a <DIR> ..
>03/01/00 03:07p <DIR> aacos1
>03/01/00 03:55p <DIR> aagui1
>03/01/00 03:39p <DIR> aalfo1
>03/01/00 03:07p <DIR> aalle1
><SNIP>
>03/01/00 03:08p <DIR> zluca1
>04/25/00 02:17p <DIR> zpers1
>03/01/00 03:08p <DIR> ztayl1
>03/01/00 03:52p <DIR> zthom1
>03/01/00 03:20p <DIR> zveal1
>03/01/00 03:58p <DIR> zwaji1
> 3755 File(s) 0 bytes
> 91,578,900,480 bytes free
>
>The script removes everything but lines containing directory listings:
>#Remove first 7 lines, and last 2 lines
>pop(@lines);
>pop(@lines);
>shift(@lines);
>shift(@lines);
>shift(@lines);
>shift(@lines);
>shift(@lines);
>shift(@lines);
>shift(@lines);
>
>It then isolates the user directories and builds a hash of directory
>listings only:
>#Loop through each line of directory output and strip out everything
>#but the directory then call dir_size.
>#assign @lines to $line, one at a time
>foreach $line (@lines)
> {
> @line = split(/ /,$line,21);
> splice(@line,0,20);
> chomp(@line);
> my $current_dir = $line[0];
> push (@list, $current_dir);
> }
>
>It returns a hash containing all user directories:
>return @list;
>
>When you issue the command "dir /s/w C:\imail\users\USERNAME\*.mbx" what do
>you get? Can you redirect it "> test2.txt" and send it to me?
>
>For example on NT4 SP5, when the script issues the command to get total
>mailbox size:
>@res = `dir /s/w "$test_dir"`;
>
>which on my system is equivalent to "dir /s/w e:\imail\users\jmorgan\*.mbx"
>
>I get:
>
> Volume in drive E has no label.
> Volume Serial Number is 548A-792A
>
>
> Directory of e:\imail\users\jmorgan
>
>Main.mbx
> 1 File(s) 11,203 bytes
>
> Total Files Listed:
> 1 File(s) 11,203 bytes
> 91,579,039,744 bytes free
>
>In the script I take this and extract the line with the size in it:
># The second to last line has the number of files and
># total size of the the directory
>my $LastLine = $res[-2];
>
>I then Isolate the number with:
>@res = split(/ /,$LastLine);
>
>Remove the commas:
>$_ = $res[-2];
>tr/0-9//cd;
>$res[-2] = $_;
>
>And return the total size of all mbx files:
>return $res[-2];
>
>As you can see, any variance in the way DIR prints its results may break
the
>script. I don't have a Windows 2000 system running right now, so I can't
>verify the output of the DIR command on Windows 2000.
>
>Hopefully I can make some changes and get it to work for everyone, once I
>get enough feedback. Any Perl gurus know a better way?
>
>> -----Original Message-----
>> From: Dave Koontz [SMTP:[EMAIL PROTECTED]]
>> Sent: Wednesday, April 26, 2000 8:43 PM
>> To: "Joel Morgan"
>> Subject: Re: [IMail Forum] issue warnings to users approaching the
>> mailbox size limit
>>
>> First I would just like to say THANKS for providing such a nice script
for
>> everyone's use!
>>
>> I agree with another user on the iMail list that their should be TWO
>> levels
>> of notifications, perhaps at 75% - polite, and another more serious one
>> at
>> 90%....
>>
>> Now, I do have a problem with the current script. Perhaps I am just to
>> naive with perl. I am running iMail v6.03 on NT 2000. When I run your
>> script, it displays "NO USER" name.... further it appears that it is just
>> looking at the \imail\users folder and not the individual user's folder
as
>> the bytes for each user it finds are identical. When I modify your
script
>> and attempt to isolate the $dir variable --- it returns "" (nothing) So
>> the
>> registry key and the User folder your script looks at is always the root
>> of
>> both. Can you help a newbie? <g>
>>
>> Thanks again....
>>
>> ----- Original Message -----
>> From
>> To: <[EMAIL PROTECTED]>
>> Sent: Wednesday, April 26, 2000 4:35 PM
>> Subject: [IMail Forum] issue warnings to users approaching the mailbox
>> size
>> limit
>>
>>
>> Imail version 6.X lacks the ability to issue warnings to users
approaching
>> the mailbox size limit. This perl script scans the registry for each
>> domain
>> and checks each user's mailbox size against MaxSize entered for the user
>> in
>> the registry. If the user has 0 entered as MaxSize then the domains
>> MaxSize
>> entry is used. If the mailbox is within 10% of the limit it emails a
>> caution
>> to the user and logs it. If the user's mailbox exceeds the limit it only
>> logs it. The resulting log file is then emailed to the postmaster
account.
>> Sizes are reported in bytes.
>>
>> To run the script every 24 hours, schedule with the command "AT 2:00
>> /interactive /every:Su,M,T,W,Th,F,S C:\BIN\LIMIT.PL"
>>
>> I would appreciate any comments or suggestions. For example should the
>> user
>> continue to be warned once the mailbox limit has been passed. Maybe even
>> warn until the user is 10% over the limit. It currently starts warning
the
>> user at 10% of the limit and continues until the limit is reached. I
don't
>> want the number of warnings mailed to a user to be infinite.
>>
>> It should work without any configuration settings other than to either
>> manually run it or schedule it. Would someone give it a shot and help me
>> test it?
>>
>> It seems to work fine, but use at your own risk!
>>
>> Works with Activestate's Perl available at http://www.activestate.com/
>>
>> <<LIMIT.PL>>
>>
>Please visit http://www.ipswitch.com/support/mailing-lists.html
>to be removed from this list.
>
dirsize.pl