[SunHELP] Shell script
sunhelp at sunhelp.org
sunhelp at sunhelp.org
Thu Jan 25 13:14:48 CST 2001
Thanks Guys.
Wally
>From: Bashar <big at kuwaitnet.net>
>Reply-To: sunhelp at sunhelp.org
>To: sunhelp at sunhelp.org
>Subject: Re: [SunHELP] Shell script
>Date: Thu, 25 Jan 2001 07:28:22 +0300 (AST)
>
>smaller easier shell script can be like this
>#!/usr/local/bin/bash
># set the space you want to monitor here
>myspace=80
>df -k|awk '{print $5}' > /tmp/dfer
>df -k > /tmp/real.df
>grep $mypsace /tmp/dfer
>RETURN=$?
>if [ $RETURM -eq 0 ]
>mail root < /tmp/real.df
>fi
>
>
>
> KuwaitNet Communications Inc.
> Bashar A AlAbdulhadi UNIX & NET Administrator
> bashar at kuwaitnet.net http://www.KuwaitNet.net
> Phone: (KW) +965-2647060 Fax: (KW) +965-5337060
> Phone: (US) +514-2417955 Fax: (US) +208-2755778
> ICQ UIN: 19907999 Pager: (KW) 9312471
> IRC: Big @ #Kuwaitnet YaHoO ID: kuwaitnets
> Toll free (from USA & Canada only) 1-888-KuwaitNET
>
> "Quality, Stability, 24 Hours Tech. Support"
> "Think KuwaitNet"
>
>On Wed, 24 Jan 2001, Ivan Kovalev wrote:
>
> > here is the best one I know, may be a bit more elaborate then what you
> > are asking for...
> >
> > $ cat dcp
> > #!/usr/bin/perl
> >
> > # dcp - disk capacity profiler
> > # (c) 1999 inkcom
> >
> > # Modify df command to fit your path and version
> > $dfcommand = "/usr/bin/df -k";
> > # The file containing historical data
> > $history = "du/hist";
> >
> > # Make sure that one or more filesystems are specified on the
> > command-line
> > $usage = "Usage: $0 filesystem [filesystems...]\n";
> > if (@ARGV < 1) {
> > print $usage;
> > exit;
> > }
> >
> > # Open the history file for writing, if possible
> > open HISTORY, ">> $history" or die "Cannot open $history for writing";
> >
> > foreach $filesystem (@ARGV) {
> > # Make sure the filesystem exists
> > if (! -e $filesystem) {
> > print STDERR "$filesystem does not exist\n";
> > next;
> > }
> >
> > # Create a list of requested filesystems, for later use
> > @filesystems = (@filesystems, $filesystem);
> >
> > # Get the df statistics
> > $filesystem_info = `$dfcommand $filesystem`;
> >
> > # Get rid of the header line
> > $filesystem_info =~ s/(.)+\n//;
> >
> > # Get the total, used and available space values
> > # We are expecting the following format for the output of df:
> > # Filesystem kbytes used avail capacity Mounted on
> > # /dev/dsk/c0t3d0s0 192807 19980 153547 12% /
> > ($discard, $total, $used, $available, @discard) = split /\s+/,
> > $filesystem_info;
> >
> > # Get the timestamp
> > $time = time;
> >
> > # Save the data into the history file
> > print HISTORY "$time;$filesystem $total $used $available\n";
> > }
> >
> > # Close the history file for writing
> > close HISTORY;
> >
> > # Open the history file again for reading, or complain
> > open HISTORY, "$history" or die "Cannot open $history for reading\n";
> >
> > # Read the history into assiciative arrays
> > while (<HISTORY>) {
> > ($timefilesystem, $total, $used, $available) = split /\s+/, $_;
> > $total{$timefilesystem} = $total;
> > $used{$timefilesystem} = $used;
> > $available{$timefilesystem} = $available;
> > }
> >
> > # Do some preliminary calculations
> > foreach $timefilesystem (sort keys %total) {
> > ($time, $filesystem) = split /;/, $timefilesystem;
> > foreach $fs (@filesystems) {
> > if ($filesystem eq $fs) {
> > if (!$prevtime{$fs}) {
> > $prevtime{$fs} = $time;
> > $prevused{$fs} = $used{$timefilesystem};
> > next;
> > }
> >
> > # Time difference between data points
> > $timediff = $time - $prevtime{$fs};
> >
> > # Just in case...
> > next if ($timediff == 0);
> >
> > # Calculate the size growth rate in seconds
> > $growthrate = ($used{$timefilesystem} -
> > $prevused{$fs})/$timediff;
> >
> > # Save these numbers for the average calculation
> > $growthratetotal{$fs} = $growthratetotal{$fs} + $growthrate;
> > $growthratenumber{$fs}++;
> > $lastsize{$fs} = $available{$timefilesystem};
> >
> > # Save the time and used values for next round
> > $prevtime{$fs} = $time;
> > $prevused{$fs} = $used{$timefilesystem};
> > }
> > }
> > }
> >
> > # Print out the results
> > foreach $fs (@filesystems) {
> > # If there is not enough data, i.e., it's the first time that
> > # info is requested for a particular partition
> > if ($growthratenumber{$fs} == 0 ) {
> > print "Not enough data for $fs. Please run $0 again.\n";
> > next;
> > }
> >
> > # Calculate the average time left in hours and days
> > $growthrate = $growthratetotal{$fs}/$growthratenumber{$fs};
> >
> > # Growthrate must be non-zero
> > if ($growthrate != 0) {
> > # Calculate the time left at the present in days and hours
> > $timeleft = $lastsize{$fs}/$growthrate/3600;
> > $daysleft = $timeleft/24;
> >
> > # If the partition is filling up...
> > if ($timeleft > 0 ) {
> > printf "$fs will be FULL in about %.2f hours (%.2f days)\n",
> > $timeleft, $daysleft;
> > # Or, if the partion is emptying...
> > } else {
> > printf "$fs will be EMPTY in about %.2f hours (%.2f days)\n",
> > abs $timeleft, abs $daysleft;
> > }
> > # Otherwise, there is no growth
> > } else {
> > print "$fs is not changing in size\n";
> > }
> > }
> > $
> > walubank at hotmail.com wrote:
> > >
> > > Does anybody have a shell script that will monitor the file system and
>send
> > > a mail to root when they get to 80%
> > > Thanks
> > > Wally
> > > _________________________________________________________________
> > > Get your FREE download of MSN Explorer at http://explorer.msn.com
> > >
> > > _______________________________________________
> > > SunHELP maillist - SunHELP at sunhelp.org
> > > http://www.sunhelp.org/mailman/listinfo/sunhelp
> > _______________________________________________
> > SunHELP maillist - SunHELP at sunhelp.org
> > http://www.sunhelp.org/mailman/listinfo/sunhelp
> >
>
>_______________________________________________
>SunHELP maillist - SunHELP at sunhelp.org
>http://www.sunhelp.org/mailman/listinfo/sunhelp
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com
More information about the SunHELP
mailing list