X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clients%2FHP%2Fbin%2Fdiskspace;fp=clients%2FHP%2Fbin%2Fdiskspace;h=3e2f3e24d05d5dfb6ae0f4708dae88b4c5aaff84;hb=a8c84d2892f07a6863b68a11eb0a4a79ffd71fb5;hp=0000000000000000000000000000000000000000;hpb=95384f94f88aceeb5eef2d322210ba4a438b6512;p=clearscm.git diff --git a/clients/HP/bin/diskspace b/clients/HP/bin/diskspace new file mode 100644 index 0000000..3e2f3e2 --- /dev/null +++ b/clients/HP/bin/diskspace @@ -0,0 +1,112 @@ +#!/usr/bin/perl +################################################################################ +# +# File: diskspace +# Description: Check filesystems to see if they are becoming too full +# Author: Andrew@DeFaria.com +# Created: Fri Mar 12 10:17:44 PST 2004 +# Language: Perl +# Modifications: +# +# (c) Copyright 2004, Andrew@DeFaria.com, all rights reserved +# +################################################################################ +use strict; +use warnings; +use File::Spec; + +my ($me, $abs_path, $lib_path, $bin_path, $log_path); + +BEGIN { + # Extract relative path and basename from script name. + $0 =~ /(.*)[\/\\](.*)/; + + $abs_path = (!defined $1) ? "." : File::Spec->rel2abs ($1); + $me = (!defined $2) ? $0 : $2; + + # Setup paths + $bin_path = "$abs_path"; + $lib_path = "$abs_path/../../lib"; + $log_path = "$abs_path/../../log"; + + # Add the appropriate path to our modules to @INC array. + unshift (@INC, "$lib_path"); +} # BEGIN + +use Display; + +my $threshold = 90; + +sub Usage { + my $msg = shift; + + display "ERROR: $msg\n" if defined $msg; + + display "$me\t[-v] [-d] [-u] [ -n | -l ]"; + display "\t-v\tTurn on verbose mode"; + display "\t-d\tTurn on debug mode"; + display "\t-u\tThis usage message"; + display "\t-t\tThreshold (0-100)"; + + exit 1; +} # Usage + +sub CheckFilesystemSpace { + my $filesystem = shift; + + # Isolate the disk usage line + my @diskusage = `df -k $filesystem`; + + # Get fields + $_ = $diskusage [1]; + my ($fs, $blocks, $used, $available, $used_percent, $mounted_on) = split; + + if ($used_percent =~ /(\d+)%/) { + $used_percent = $1; + } # if + + $available = sprintf ("%.3f", $available / 1024); + + # Check if over threshold and report + if ($used_percent <= $threshold ) { + verbose "$mounted_on is $used_percent% full - $available Megs left"; + } else { + warning "$mounted_on is $used_percent% full - $available Megs left"; + } # if +} # CheckFilesystemSpace + +sub CheckLocalFilesystems { + my @local_filesystems = `df -k`; + + @local_filesystems = grep {/^\/dev/} @local_filesystems; + + foreach (@local_filesystems) { + my ($fs, $blocks, $used, $available, $used_percent, $mounted_on) = split; + CheckFilesystemSpace $mounted_on; + } # foreach +} # CheckLocalFilesystems + +# Get parameters +while ($ARGV [0]) { + if ($ARGV [0] eq "-v") { + set_verbose; + } elsif ($ARGV [0] eq "-d") { + set_debug; + } elsif ($ARGV [0] eq "-t") { + shift (@ARGV); + if (!$ARGV [0]) { + Usage "Must specify threshold after -t"; + } else { + $threshold = $ARGV [0]; + } # if + } elsif ($ARGV [0] eq "-u") { + Usage; + } else { + Usage "Unknown argument found: " . $ARGV [0]; + } # if + + shift (@ARGV); +} # while + +debug "Theshold: $threshold"; +CheckLocalFilesystems;