/[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.10 by dpavlin, Thu Sep 12 14:58:44 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            eval {
43                    local $SIG{ALRM} = sub { die "ssh timeout\n"; };
44                    alarm 10;       # wait for ssh to connect and return first line
45                    open(DF,"$ssh df -klP |") || die "$ssh df: $!";
46            };
47            print STDERR " read DF eof=",eof(DF);
48          while(<DF>) {          while(<DF>) {
49                    alarm 0;        # turn alarm off
50                  chomp;                  chomp;
51                  my ($node,$total,$used,$aval,$use_pcnt,$mount) = split(/\s+/,$_,6);                  my ($node,$total,$used,$aval,$use_pcnt,$mount) = split(/\s+/,$_,6);
52                  if ($use_pcnt && $use_pcnt =~ s/(\d+)%/$1/) {                  if ($use_pcnt && $use_pcnt =~ s/(\d+)%/$1/) {
53  #                       print STDERR "$_\n";  #                       print STDERR "$_\n";
54  #                       $df{$mount}=$use_pcnt;  #                       $df->{$mount}=$use_pcnt;
55                          $df{$mount}=$used * 100 / $total if ($total != 0);                          $df->{$mount}=$used * 100 / $total if ($total != 0);
56  #                       print $df{$mount}," == $use_pcnt\n";  #                       print $df->{$mount}," == $use_pcnt\n";
57                  }                  }
58          }          }
59          close(DF);          close(DF);
60            $cache->set( $ssh, $df, "1 min" ) if ($USE_CACHE);
61  }  }
62    
63  parse_df($ssh);  parse_df($ssh);
# Line 49  target --default-- Line 71  target --default--
71  EOF  EOF
72          my @targets;          my @targets;
73    
74          foreach my $mnt (keys %df) {          foreach my $mnt (keys %{$df}) {
75                  my $target = $mnt;                  my $target = $mnt;
76                  if ($mnt eq "/") {                  if ($mnt eq "/") {
77                          $target = "root";                          $target = "root";
# Line 68  EOF Line 90  EOF
90          }          }
91          print "target overview          print "target overview
92          mtargets        = \"",join("; ",@targets),"\"          mtargets        = \"",join("; ",@targets),"\"
93          target-type     = usage\n";          target-type     = usage
94            y-min           = 0
95            y-max           = 100\n";
96          exit 1;          exit 1;
97  }  }
98    
99  # dump free %  # dump free %
100  #  #
101  print $df{$mount} || "unknown";  print $df->{$mount} || "unknown";
102  print "\n";  print "\n";

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

  ViewVC Help
Powered by ViewVC 1.1.26