/[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

Contents of /parse_df.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (show annotations)
Fri Jul 26 10:10:02 2002 UTC (21 years, 8 months ago) by dpavlin
Branch: MAIN
Changes since 1.7: +1 -0 lines
File MIME type: text/plain
better instruction on top of file

1 #!/usr/bin/perl -w
2 #
3 # cricket module which creates configuration file (when called with
4 # apropriate option), re-reads configuration (so that it can report
5 # filesystems in same order always)
6 #
7 # Dobrica Pavlinusic <dpavlin@rot13.org>
8 # http://www.rot13.org/~dpavlin/sysadm.html
9 #
10 # Usage:
11 #
12 # parse_df.pl "ssh -i ~cricket/.ssh/df host.dom" /mount_point
13 # ssh into remote host and get data for /mount_point
14 #
15 # parse_df.pl "ssh -i ~cricket/.ssh/df --config"
16 # dump configuration file to stdout
17 #
18
19 use strict;
20
21 my $ssh = shift @ARGV || "";
22 my $mount = shift @ARGV || "/";
23
24 # 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 {
35 my $ssh = shift @_;
36 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>) {
44 chomp;
45 my ($node,$total,$used,$aval,$use_pcnt,$mount) = split(/\s+/,$_,6);
46 if ($use_pcnt && $use_pcnt =~ s/(\d+)%/$1/) {
47 # print STDERR "$_\n";
48 # $df->{$mount}=$use_pcnt;
49 $df->{$mount}=$used * 100 / $total if ($total != 0);
50 # print $df->{$mount}," == $use_pcnt\n";
51 }
52 }
53 close(DF);
54 $cache->set( $ssh, $df, "1 min" ) if ($USE_CACHE);
55 }
56
57 parse_df($ssh);
58
59 if ($mount eq "--config") {
60 print <<"EOF";
61 target --default--
62 ssh = "$ssh"
63 long-desc = "edit name of your host here"
64
65 EOF
66 my @targets;
67
68 foreach my $mnt (keys %{$df}) {
69 my $target = $mnt;
70 if ($mnt eq "/") {
71 $target = "root";
72 } else {
73 $target =~ s,^/,,;
74 $target =~ s,/,_,g;
75 }
76 push @targets,$target;
77 print <<"EOF";
78 target $target
79 target-type = usage
80 display-name = "$mnt"
81 skip-overview = 1
82
83 EOF
84 }
85 print "target overview
86 mtargets = \"",join("; ",@targets),"\"
87 target-type = usage
88 y-min = 0
89 y-max = 100\n";
90 exit 1;
91 }
92
93 # dump free %
94 #
95 print $df->{$mount} || "unknown";
96 print "\n";

  ViewVC Help
Powered by ViewVC 1.1.26