ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/ihost-perl/plugins/perl/i-scream_disk.pl
Revision: 1.7
Committed: Fri Mar 28 16:30:34 2003 UTC (21 years, 7 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +1 -1 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
Removed some un-used code from CVS. We can always resurrect this later if
someone feels they want to work on it. Gone are the old perl ihost which
isn't needed now, winhost which is broken and shows no sign of being fixed,
and DBReporter. If someone wants to revive them, I'll undelete them :-)

File Contents

# Content
1 #!/usr/bin/perl -w
2
3 #
4 # i-scream central monitoring system
5 # http://www.i-scream.org.uk
6 # Copyright (C) 2000-2002 i-scream
7 #
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License
10 # as published by the Free Software Foundation; either version 2
11 # of the License, or (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 #
22
23 #-----------------------------------------------------------------
24 # i-scream host plugin - disk information
25 # $Author: tdb $
26 # $Id: i-scream_disk.pl,v 1.6 2002/05/21 16:47:12 tdb Exp $
27 #
28 # A short perl script to grab the current disk states and info
29 #-----------------------------------------------------------------
30
31
32 $| = 1;
33
34
35 # You'd be silly not to use this ;)
36 use strict;
37
38 # Exclude list
39 my($exclude_list) = "^/nfs/;^/cdrom/";
40 my(@exclude_array) = split(';', $exclude_list);
41
42 # Get the OS type from the args, or try towork it out
43 my($ostype) = $ARGV[0];
44 $ostype = `uname -s` if not defined $ostype;
45 chomp($ostype);
46
47 # Decide which paths we should use.
48 my($dfbin);
49 if ($ostype eq "SunOS") {
50 # covers: Solaris 7/8
51 $dfbin = "/usr/bin/df -akl";
52 }
53 elsif ($ostype eq "Linux") {
54 # covers: Debian r2.2
55 $dfbin = "/bin/df -akl";
56 }
57 elsif ($ostype eq "FreeBSD") {
58 # covers: FreeBSD 4.X
59 $dfbin = "/bin/df -ak";
60 }
61 else {
62 print "i-scream_disk.pl Error: Unable to identify system type - \"$ostype\".\n";
63 print "\"uname -s\" does not report one of the following known types;\n";
64 print " SunOS, Linux, FreeBSD\n";
65 exit(1);
66 }
67
68 # Run the following components: -
69 &include_disk();
70
71 # End the program normally.
72 exit(0);
73
74
75
76
77 # sub to print pairs of data, separated by a single space character.
78 # If the second argument is undefined, then the pair is still printed,
79 # however, the value shall be displayed as the the 'default' value
80 # if the passed value was undefined.
81 sub print_pair($$$) {
82 my($default, $name, $value) = @_;
83
84 if (!defined $value) {
85 $value = $default;
86 }
87
88 # Remove the trailing linefeed if we've not already done so.
89 chomp($value);
90
91 # print the pair of data with a space inbetween.
92 print "$name $value\n";
93 }
94
95
96 # sub to find out disk partition information, if it exists.
97 sub include_disk() {
98
99 # Run the df program.
100 my(@df) = `$dfbin`;
101
102 # Go through each line of the program, looking for each thing we want.
103 my($partition_no) = 0;
104 for (my($i) = 0; $i <= $#df; ++$i) {
105 my($line) = $df[$i];
106 if ($line =~ /^[^\s]+\s*$/) {
107 ++$i;
108 $line .= $df[$i] if defined $df[$i];
109 }
110 if ($line =~ /^([^\s]+)\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s+[^\s]+\s+(\/[^\s]*)\s*/) {
111 my ($filesystem, $kbytes, $used, $avail, $mount) = ($1, $2, $3, $4, $5);
112 my($do_disk) = 1;
113 foreach my $exclusion (@exclude_array) {
114 if ($mount =~ /$exclusion/) {
115 $do_disk = 0;
116 last;
117 }
118 }
119 if($do_disk) {
120 &print_pair("unknown", "packet.disk.p$partition_no.attributes.name", $filesystem);
121 &print_pair(0, "packet.disk.p$partition_no.attributes.kbytes", $kbytes);
122 &print_pair(0, "packet.disk.p$partition_no.attributes.used", $used);
123 &print_pair(0, "packet.disk.p$partition_no.attributes.avail", $avail);
124 &print_pair("unknown", "packet.disk.p$partition_no.attributes.mount", $mount);
125 ++$partition_no;
126 }
127 }
128 }
129
130 }