head 1.8; access; symbols SNMPDX_1_0_0:1.8 SNMPDX_0_2_11:1.7 SNMPDX_0_2_10:1.6 SNMPDX_0_2_9:1.6 SNMPDX_0_2_8:1.5 SNMPDX_0_2_7:1.5 SNMPDX_0_2_6:1.4 SNMPDX_0_2_5:1.4 SNMPDX_0_2_4:1.3 SNMPDX_0_2_3:1.3 SNMPDX_0_2_2:1.3 SNMPDX_0_2_1:1.2 SNMPDX_0_2_0:1.2; locks; strict; comment @# @; 1.8 date 2007.03.01.10.52.39; author rse; state Exp; branches; next 1.7; commitid FNuFlqR2Qo3fkn8s; 1.7 date 2005.10.05.17.42.13; author rse; state Exp; branches; next 1.6; 1.6 date 2004.07.28.13.00.59; author thl; state Exp; branches; next 1.5; 1.5 date 2003.09.10.15.01.46; author rse; state Exp; branches; next 1.4; 1.4 date 2003.09.10.12.29.06; author thl; state Exp; branches; next 1.3; 1.3 date 2003.09.09.13.44.04; author thl; state Exp; branches; next 1.2; 1.2 date 2003.09.08.14.34.56; author thl; state Exp; branches; next 1.1; 1.1 date 2003.09.08.12.50.17; author thl; state Exp; branches; next ; desc @@ 1.8 log @Upgrade build environment to GNU shtool 2.0.6 and GNU autoconf 2.60 @ text @## ## OSSP snmpdx - SNMP Daemon Extension ## Copyright (c) 2003-2007 The OSSP Project ## Copyright (c) 2003-2007 Ralf S. Engelschall ## Copyright (c) 2003-2005 Cable & Wireless ## ## This file is part of OSSP snmpdx, a SNMP daemon extension which ## can be found at http://www.ossp.org/pkg/tool/snmpdx/. ## ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License ## as published by the Free Software Foundation; either version ## 2.0 of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this file; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ## USA, or contact Ralf S. Engelschall . ## ## sysFs.pm: probe for System, Filesystem ## package My::Probe::sysFs; our @@ISA = qw(My::Probe); sub oids ($) { my ($self) = @@_; return $self->{-ctx}->{-mib}->oids("*.snmpdx.host.system.sysFs.*"); } sub probe ($$) { my ($self, $obj) = @@_; if ($self->{-ctx}->{-platform}->id() =~ m/FreeBSD/i) { my @@sysFsENTRY; my $n = 0; # local workspace my $out; my $raw; my $n2i; my @@dat; my $new; # process df $out = $self->{-ctx}->{-sys}->run("/bin/df -m", "1m"); $raw = $out->{-stdout}; $n2i = {}; if ($raw =~ m/^([^\n]*\bFilesystem\b[^\n]*)\n(.*)$/s) { $n2i = &mkn2i(split / +/, $1); foreach $line (split "\n", $2) { @@dat = split(/ +/, $line); if (@@dat[$n2i->{Filesystem}] =~ m|^/dev/|) { $new = {}; $new->{sysFsIndex} = $n; if (defined $n2i->{Filesystem}) { $new->{sysFsDevice} = @@dat[$n2i->{Filesystem}]; } if (defined $n2i->{Mounted}) { $new->{sysFsMountpoint} = @@dat[$n2i->{Mounted}]; } if (defined $n2i->{_1M_blocks}) { $new->{sysFsMax} = @@dat[$n2i->{_1M_blocks}]; } if (defined $n2i->{Avail}) { $new->{sysFsFree} = @@dat[$n2i->{Avail}]; } if (defined $new->{sysFsMax} and defined $new->{sysFsFree}) { $new->{sysFsUsed} = $new->{sysFsMax} - $new->{sysFsFree}; } $sysFsENTRY[$n++] = $new; } } } if ($obj->{-name} =~ m/\.sysFsENTRY\.([^.]+)\.(\d+)$/) { my $col = $1; my $row = ($2 > 0 ? $2 - 1 : 0); $self->{-ctx}->{-log}->printf(4, "col=%s row=%s", $col, $row); $obj->{-value} = $sysFsENTRY[$row]->{$col} if (defined $sysFsENTRY[$row] and defined $sysFsENTRY[$row]->{$col}); } } elsif ($self->{-ctx}->{-platform}->id() =~ m/Linux/i) { my @@sysFsENTRY; my $n = 0; # local workspace my $out; my $raw; my $n2i; my @@dat; my $new; # process df $out = $self->{-ctx}->{-sys}->run("/bin/df -m", "1m"); $raw = $out->{-stdout}; $n2i = {}; if ($raw =~ m/^([^\n]*\bFilesystem\b[^\n]*)\n(.*)$/s) { $n2i = &mkn2i(split / +/, $1); foreach $line (split "\n", $2) { @@dat = split(/ +/, $line); if (@@dat[$n2i->{Filesystem}] =~ m|^/dev/|) { $new = {}; $new->{sysFsIndex} = $n; if (defined $n2i->{Filesystem}) { $new->{sysFsDevice} = @@dat[$n2i->{Filesystem}]; } if (defined $n2i->{Mounted}) { $new->{sysFsMountpoint} = @@dat[$n2i->{Mounted}]; } if (defined $n2i->{_1M_blocks}) { $new->{sysFsMax} = @@dat[$n2i->{_1M_blocks}]; } if (defined $n2i->{Available}) { $new->{sysFsFree} = @@dat[$n2i->{Available}]; } if (defined $new->{sysFsMax} and defined $new->{sysFsFree}) { $new->{sysFsUsed} = $new->{sysFsMax} - $new->{sysFsFree}; } $sysFsENTRY[$n++] = $new; } } } if ($obj->{-name} =~ m/\.sysFsENTRY\.([^.]+)\.(\d+)$/) { my $col = $1; my $row = ($2 > 0 ? $2 - 1 : 0); $self->{-ctx}->{-log}->printf(4, "col=%s row=%s", $col, $row); $obj->{-value} = $sysFsENTRY[$row]->{$col} if (defined $sysFsENTRY[$row] and defined $sysFsENTRY[$row]->{$col}); } } elsif($self->{-ctx}->{-platform}->id() =~ m/SunOS/i) { my @@sysFsENTRY; my $n = 0; # local workspace my $out; my $raw; my $n2i; my @@dat; my $new; # process df $out = $self->{-ctx}->{-sys}->run("/bin/df -k", "1m"); $raw = $out->{-stdout}; $n2i = {}; if ($raw =~ m/^([^\n]*\bFilesystem\b[^\n]*)\n(.*)$/s) { $n2i = &mkn2i(split / +/, $1); foreach $line (split "\n", $2) { @@dat = split(/ +/, $line); if (@@dat[$n2i->{Filesystem}] =~ m|^/dev/|) { $new = {}; $new->{sysFsIndex} = $n; if (defined $n2i->{Filesystem}) { $new->{sysFsDevice} = @@dat[$n2i->{Filesystem}]; } if (defined $n2i->{Mounted}) { $new->{sysFsMountpoint} = @@dat[$n2i->{Mounted}]; } if (defined $n2i->{kbytes}) { $new->{sysFsMax} = int(@@dat[$n2i->{kbytes}] / 1024); } if (defined $n2i->{avail}) { $new->{sysFsFree} = int(@@dat[$n2i->{avail}] / 1024); } if (defined $new->{sysFsMax} and defined $new->{sysFsFree}) { $new->{sysFsUsed} = $new->{sysFsMax} - $new->{sysFsFree}; } $sysFsENTRY[$n++] = $new; } } } if ($obj->{-name} =~ m/\.sysFsENTRY\.([^.]+)\.(\d+)$/) { my $col = $1; my $row = ($2 > 0 ? $2 - 1 : 0); $self->{-ctx}->{-log}->printf(4, "col=%s row=%s", $col, $row); $obj->{-value} = $sysFsENTRY[$row]->{$col} if (defined $sysFsENTRY[$row] and defined $sysFsENTRY[$row]->{$col}); } } return; } # name to index sub mkn2i ($) { my (@@name) = @@_; my $rc = {}; my $i = 0; foreach my $f (@@name) { $f =~ s/[^\w]/_/; $f =~ s/^([^a-zA-Z_])/_$1/; $rc->{$f} = $i++; }; return $rc; } 1; @ 1.7 log @flush pending changes @ text @d3 2 a4 2 ## Copyright (c) 2003-2005 The OSSP Project ## Copyright (c) 2003-2005 Ralf S. Engelschall @ 1.6 log @remove irrelevant assignments which perl >= 5.8.4 optimizes away anyway @ text @d3 3 a5 3 ## Copyright (c) 2003 The OSSP Project ## Copyright (c) 2003 Ralf S. Engelschall ## Copyright (c) 2003 Cable & Wireless @ 1.5 log @More source tree cleanups and polishing, especially adding the GPL-based copyright header used inside OSSP packages @ text @d40 1 a40 1 my @@sysFsENTRY = undef; d85 1 a85 1 my @@sysFsENTRY = undef; d130 1 a130 1 my @@sysFsENTRY = undef; @ 1.4 log @fix more array/scalar problem; add Index; rename variables removing Info @ text @d2 1 a2 1 ## snmpdx -- SNMP Daemon Extension d7 2 a8 4 ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. d10 4 a13 12 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. d15 11 a25 1 ## sysFs: System, Filesystem @ 1.3 log @fix array/scalar problem @ text @d40 2 a41 1 my @@sysFsInfoENTRY = undef; d56 1 d72 1 a72 1 push(@@sysFsInfoENTRY, $new); d77 1 a77 1 if ($obj->{-name} =~ m/\.sysFsInfoENTRY\.([^.]+)\.(\d+)$/) { d81 1 a81 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row] and defined @@sysFsInfoENTRY[$row]->{$col}); d85 2 a86 1 my @@sysFsInfoENTRY = undef; d101 1 d117 1 a117 1 push(@@sysFsInfoENTRY, $new); d122 1 a122 1 if ($obj->{-name} =~ m/\.sysFsInfoENTRY\.([^.]+)\.(\d+)$/) { d126 1 a126 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row] and defined @@sysFsInfoENTRY[$row]->{$col}); d130 2 a131 1 my @@sysFsInfoENTRY = undef; d146 1 d162 1 a162 1 push(@@sysFsInfoENTRY, $new); d167 1 a167 1 if ($obj->{-name} =~ m/\.sysFsInfoENTRY\.([^.]+)\.(\d+)$/) { d171 1 a171 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row] and defined @@sysFsInfoENTRY[$row]->{$col}); @ 1.2 log @avoid referencing undefined hash @ text @d40 1 a40 1 my $sysFsInfoENTRY = undef; d83 1 a83 1 my $sysFsInfoENTRY = undef; d126 1 a126 1 my $sysFsInfoENTRY = undef; @ 1.1 log @sysFs for FreeBSD, Linux, SunOS @ text @d79 1 a79 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row]->{$col}); d122 1 a122 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row]->{$col}); d165 1 a165 1 $obj->{-value} = @@sysFsInfoENTRY[$row]->{$col} if (defined @@sysFsInfoENTRY[$row]->{$col}); @