/[cricket]/parse_df.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /parse_df.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by dpavlin, Tue Jul 16 08:32:24 2002 UTC revision 1.9 by dpavlin, Fri Jul 26 10:24:27 2002 UTC
# Line 5  Line 5 
5  # filesystems in same order always)  # filesystems in same order always)
6  #  #
7  # Dobrica Pavlinusic <dpavlin@rot13.org>  # Dobrica Pavlinusic <dpavlin@rot13.org>
8    # http://www.rot13.org/~dpavlin/sysadm.html
9  #  #
10  # Usage:  # Usage:
11  #  #
12  #       parse_df.pl "ssh -i ~cricket/.ssh/df host.dom" /mount_point  #       parse_df.pl "ssh -i ~cricket/.ssh/df target.host" /mount_point
13  #               ssh into remote host and get data for /mount_point  #               ssh into remote host and get data for /mount_point
14  #  #
15  #       parse_df.pl "ssh -i ~cricket/.ssh/df --config"  #       parse_df.pl "ssh -i ~cricket/.ssh/df target.host" --config
16  #               dump configuration file to stdout  #               dump configuration file to stdout
17  #  #
18    
# Line 20  use strict; Line 21  use strict;
21  my $ssh = shift @ARGV || "";  my $ssh = shift @ARGV || "";
22  my $mount = shift @ARGV || "/";  my $mount = shift @ARGV || "/";
23    
24  my %df;  # do we have Cache::FileCache installed?
25    
26    my $USE_CACHE = 0;
27    eval("use Cache::FileCache;");
28    if (! $@) { $USE_CACHE = 1; }
29    
30    my $df;
31    
32    my $cache = new Cache::FileCache() if ($USE_CACHE);
33    
34  sub parse_df {  sub parse_df {
35          my $ssh = shift @_;          my $ssh = shift @_;
36          open(DF,"$ssh df -k |") || die "$ssh df: $!";          if ($USE_CACHE) {
37                    print STDERR " [using cache] ";
38                    $df = $cache->get( $ssh );
39                    return if (defined $df);
40                    print STDERR " [cache miss] ";
41            }
42            open(DF,"$ssh df -klP |") || die "$ssh df: $!";
43          while(<DF>) {          while(<DF>) {
44                  chomp;                  chomp;
45                  my ($node,$total,$used,$aval,$use_pcnt,$mount) = split(/\s+/,$_,6);                  my ($node,$total,$used,$aval,$use_pcnt,$mount) = split(/\s+/,$_,6);
46                  if ($use_pcnt && $use_pcnt =~ s/(\d+)%/$1/) {                  if ($use_pcnt && $use_pcnt =~ s/(\d+)%/$1/) {
47  #                       print STDERR "$_\n";  #                       print STDERR "$_\n";
48  #                       $df{$mount}=$use_pcnt;  #                       $df->{$mount}=$use_pcnt;
49                          $df{$mount}=$used * 100 / $total if ($total != 0);                          $df->{$mount}=$used * 100 / $total if ($total != 0);
50  #                       print $df{$mount}," == $use_pcnt\n";  #                       print $df->{$mount}," == $use_pcnt\n";
51                  }                  }
52          }          }
53          close(DF);          close(DF);
54            $cache->set( $ssh, $df, "1 min" ) if ($USE_CACHE);
55  }  }
56    
57  parse_df($ssh);  parse_df($ssh);
# Line 49  target --default-- Line 65  target --default--
65  EOF  EOF
66          my @targets;          my @targets;
67    
68          foreach my $mnt (keys %df) {          foreach my $mnt (keys %{$df}) {
69                  my $target = $mnt;                  my $target = $mnt;
70                  if ($mnt eq "/") {                  if ($mnt eq "/") {
71                          $target = "root";                          $target = "root";
# Line 68  EOF Line 84  EOF
84          }          }
85          print "target overview          print "target overview
86          mtargets        = \"",join("; ",@targets),"\"          mtargets        = \"",join("; ",@targets),"\"
87          target-type     = usage\n";          target-type     = usage
88            y-min           = 0
89            y-max           = 100\n";
90          exit 1;          exit 1;
91  }  }
92    
93  # dump free %  # dump free %
94  #  #
95  print $df{$mount} || "unknown";  print $df->{$mount} || "unknown";
96  print "\n";  print "\n";

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.26