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

Annotation of /parse_df.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.9 - (hide annotations)
Fri Jul 26 10:24:27 2002 UTC (21 years, 8 months ago) by dpavlin
Branch: MAIN
Changes since 1.8: +2 -2 lines
File MIME type: text/plain
fixed usage instructions

1 dpavlin 1.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 dpavlin 1.8 # http://www.rot13.org/~dpavlin/sysadm.html
9 dpavlin 1.1 #
10     # Usage:
11     #
12 dpavlin 1.9 # parse_df.pl "ssh -i ~cricket/.ssh/df target.host" /mount_point
13 dpavlin 1.1 # ssh into remote host and get data for /mount_point
14     #
15 dpavlin 1.9 # parse_df.pl "ssh -i ~cricket/.ssh/df target.host" --config
16 dpavlin 1.1 # dump configuration file to stdout
17     #
18    
19     use strict;
20    
21     my $ssh = shift @ARGV || "";
22     my $mount = shift @ARGV || "/";
23    
24 dpavlin 1.7 # 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 dpavlin 1.1
34     sub parse_df {
35     my $ssh = shift @_;
36 dpavlin 1.7 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 dpavlin 1.1 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 dpavlin 1.3 # print STDERR "$_\n";
48 dpavlin 1.7 # $df->{$mount}=$use_pcnt;
49     $df->{$mount}=$used * 100 / $total if ($total != 0);
50     # print $df->{$mount}," == $use_pcnt\n";
51 dpavlin 1.1 }
52     }
53     close(DF);
54 dpavlin 1.7 $cache->set( $ssh, $df, "1 min" ) if ($USE_CACHE);
55 dpavlin 1.1 }
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 dpavlin 1.4 my @targets;
67    
68 dpavlin 1.7 foreach my $mnt (keys %{$df}) {
69 dpavlin 1.1 my $target = $mnt;
70     if ($mnt eq "/") {
71     $target = "root";
72     } else {
73     $target =~ s,^/,,;
74 dpavlin 1.3 $target =~ s,/,_,g;
75 dpavlin 1.1 }
76 dpavlin 1.4 push @targets,$target;
77 dpavlin 1.1 print <<"EOF";
78     target $target
79     target-type = usage
80     display-name = "$mnt"
81 dpavlin 1.5 skip-overview = 1
82 dpavlin 1.1
83     EOF
84     }
85 dpavlin 1.4 print "target overview
86     mtargets = \"",join("; ",@targets),"\"
87 dpavlin 1.6 target-type = usage
88     y-min = 0
89     y-max = 100\n";
90 dpavlin 1.1 exit 1;
91     }
92    
93     # dump free %
94     #
95 dpavlin 1.7 print $df->{$mount} || "unknown";
96 dpavlin 1.1 print "\n";

  ViewVC Help
Powered by ViewVC 1.1.26