New features for 7.1
This commit is contained in:
parent
5b5858055a
commit
a43577a119
5 changed files with 300 additions and 3 deletions
153
sbin/diskUsage.pl
Normal file
153
sbin/diskUsage.pl
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
#!/data/wre/prereqs/perl/bin/perl
|
||||
|
||||
use lib "../lib";
|
||||
use Getopt::Long;
|
||||
use strict;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::Asset;
|
||||
|
||||
my $configFile;
|
||||
my $quiet;
|
||||
my $assetId;
|
||||
my $assetUrl;
|
||||
my $summarize = 0;
|
||||
my $blockSize = 1;
|
||||
my $recurse = 1;
|
||||
my $help;
|
||||
|
||||
$| = 1; # No buffering
|
||||
|
||||
GetOptions(
|
||||
'configFile=s'=>\$configFile, # WebGUI Config file
|
||||
'assetId=s' =>\$assetId, # AssetId to start with (optional) uses default page if not specified.
|
||||
'assetUrl=s' =>\$assetUrl, # AssetUrl to start with (optional) uses default page if not specified
|
||||
'quiet' =>\$quiet, # No output except for numeric file size (default unit is bytes, will use blockSize if specified)
|
||||
'summary!' =>\$summarize, # Displays total space used for asset and descendants (unless recurse flag is set to false in which case only the asset specified will be used)
|
||||
'blockSize=i' =>\$blockSize, # Change units in which space used is specified, defaults to bytes.
|
||||
'recurse!' =>\$recurse, # Flag indicating whether the disk space usage should consider asset and all descendants (default) or just the asset specified.
|
||||
'help!' =>\$help,
|
||||
);
|
||||
|
||||
if ($help || !$configFile) {
|
||||
|
||||
print <<__EOH;
|
||||
|
||||
usage perl $0
|
||||
|
||||
Description: This utility is modeled after the *nix 'du' utility.
|
||||
|
||||
It displays the amount of disk space used by an asset and
|
||||
it's descendants.
|
||||
|
||||
Options:
|
||||
|
||||
--assetId AssetId to use as starting point for calculating
|
||||
disk usage. Defaults to the WebGUI default page
|
||||
defined in the sites settings.
|
||||
|
||||
--assetUrl Relative asset URL to use as starting point for
|
||||
calculating (i.e., /home) disk usage. Defaults to the
|
||||
WebGUI default page defined in the sites settings.
|
||||
|
||||
--blockSize Numeric value to change the unit of measure for
|
||||
the amount of disk space used. Defaults to 1
|
||||
(bytes)
|
||||
|
||||
--help Display this help message
|
||||
|
||||
--norecurse Returns the disk space used by the starting asset only.
|
||||
|
||||
--quiet Display nothing but the amount of disk space used.
|
||||
This value will respect the blockSize and recurse
|
||||
parameters when calculating it's output.
|
||||
|
||||
--summary Display only the total amount of disk space used in a
|
||||
human readable format.
|
||||
|
||||
--configFile WebGUI config file to use. This parameter is required.
|
||||
|
||||
__EOH
|
||||
exit;
|
||||
}
|
||||
|
||||
my $session = start();
|
||||
du();
|
||||
finish($session);
|
||||
|
||||
#-------------------------------------------------
|
||||
sub start {
|
||||
my $session = WebGUI::Session->open("../",$configFile);
|
||||
$session->user({userId=>3});
|
||||
return $session;
|
||||
}
|
||||
|
||||
#-------------------------------------------------
|
||||
sub finish {
|
||||
my $session = shift;
|
||||
$session->var->end();
|
||||
$session->close();
|
||||
}
|
||||
|
||||
#-------------------------------------------------------
|
||||
sub du {
|
||||
my $asset;
|
||||
my $totalSize; # disk space used
|
||||
|
||||
if ($assetId) { # They specified an assetId to start with
|
||||
$asset = WebGUI::Asset->newByDynamicClass($session,$assetId);
|
||||
die ("Unable to instanciate asset $assetId") unless defined $asset;
|
||||
print "\nStarting with asset $assetId...\n" unless $quiet;
|
||||
}
|
||||
elsif ($assetUrl) { # They specified an assetUrl to start with
|
||||
$asset = WebGUI::Asset->newByUrl($session,$assetUrl);
|
||||
die ("Unable to instanciate asset with URL $assetUrl") unless defined $asset;
|
||||
print "\nStarting with asset url $assetUrl...\n" unless $quiet;
|
||||
}
|
||||
else { # No id specified, assume they want to start with the site's home page
|
||||
$asset = WebGUI::Asset->getDefault($session);
|
||||
die ("Unable to instanciate the WebGUI Default Page. Something is seriously broken.") unless defined $asset;
|
||||
print "\nStarting with the Default Page...\n" unless $quiet;
|
||||
}
|
||||
|
||||
my $lineage = ["self"];
|
||||
push (@$lineage, "descendants") if $recurse;
|
||||
|
||||
my $descendants = $asset->getLineage($lineage,{returnObjects=>1});
|
||||
foreach my $currentAsset (@$descendants) {
|
||||
my $size = $currentAsset->get("assetSize");
|
||||
$size = $size / $blockSize; # convert to blockSize specified
|
||||
$totalSize += $size;
|
||||
|
||||
$size = sprintf("%.2f", $size) unless ($blockSize == 1); # No point in printing .00 after everything
|
||||
print "$size\t".$currentAsset->getUrl."\n" unless ($quiet || $summarize);
|
||||
}
|
||||
|
||||
# Format to a whole number unless the total is less than 1. If it's less than 1 attempt to display 2 digits of precision to avoid displaying a zero size.
|
||||
unless ($totalSize < 1) {
|
||||
$totalSize = sprintf("%d", $totalSize);
|
||||
}
|
||||
else {
|
||||
$totalSize = sprintf("%.2f", $totalSize);
|
||||
}
|
||||
|
||||
unless ($quiet) { # Human readable
|
||||
# try to come up with an intellegible label for the output
|
||||
my $units;
|
||||
if ($blockSize == 1) { # bytes
|
||||
$units = "bytes";
|
||||
} elsif ($blockSize == 1000 || $blockSize == 1024) { # kilobytes
|
||||
$units = "Kb";
|
||||
} elsif ($blockSize == 1000*1000 || $blockSize == 1024*1024) { # megabytes
|
||||
$units = "Mb";
|
||||
} else { # Unknown units
|
||||
$units = "units";
|
||||
}
|
||||
|
||||
print "\nTotal Space used: $totalSize $units \n\n";
|
||||
}
|
||||
else { # return script friendly output of the size only.
|
||||
print $totalSize;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue