Compare commits

...

34 commits

Author SHA1 Message Date
5cf1d8f752 Prepare release
Some checks failed
Packaging Test / test (push) Failing after 6s
2024-07-23 08:15:22 +02:00
839264bc64 check_smart: Update to 6.14.2 2024-07-23 08:10:10 +02:00
95224ebfa5 check_nextcloud: Update to latest git version 2024-03-31 21:08:35 +02:00
758756937c New changelog 2024-03-18 13:30:04 +00:00
164b9e5a59 Prepare release 2024-03-18 14:10:14 +01:00
67dd95c023 Autoupdate d/control 2024-03-18 13:01:51 +00:00
73998739bf Autoupdate d/copyright 2024-03-18 13:01:27 +00:00
8f0f5b4b33 Adding check_bond 2024-03-18 12:57:55 +00:00
64873336dd Prepare release 2024-03-08 15:46:01 +01:00
eaaddfac28 Revert to use dh-sequence-python3. 2024-03-08 15:44:46 +01:00
14c0c84544 Prepare release 2024-03-08 15:22:12 +01:00
7136793647 Merge branch 'development' of github.com:waja/monitoring-plugins-cyconet into development 2024-03-08 14:10:56 +01:00
87533869e9 check_smart: Update to 6.14.1 2024-03-08 13:06:59 +00:00
cd031f5322 check_nwc_health: Update to 11.2.4 2024-03-08 13:02:22 +00:00
713d3fe45b check_esxi_hardware: Update to 20221230 2024-03-08 13:56:10 +01:00
65f532cb2f check_es_system: Update to 1.12.1 2024-03-08 12:45:36 +00:00
Bas Couwenberg
47225a26b6 Use dh-sequence-python3. 2024-03-08 12:43:27 +00:00
f9a67f808f d/rules: Disable override_dh_python3 2024-03-08 13:42:09 +01:00
waja
9c474d7e0c
Merge pull request #44 from waja/dependabot-github_actions-dawidd6-action-debian-package-1.6.0
build(deps): bump dawidd6/action-debian-package from 1.5.0 to 1.6.0
2024-01-08 09:58:21 +01:00
dependabot[bot]
bdcf8f3b30
build(deps): bump dawidd6/action-debian-package from 1.5.0 to 1.6.0
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 04:50:25 +00:00
dbfda08dc3 Merge branch 'development' of github.com:waja/monitoring-plugins-cyconet into development 2023-09-05 13:40:09 +02:00
waja
fd71cd0131
Merge pull request #43 from waja/dependabot-github_actions-actions-checkout-4
build(deps): bump actions/checkout from 3 to 4
2023-09-05 09:07:07 +02:00
dependabot[bot]
ab57752385
build(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 04:14:44 +00:00
ssieber
d27b9f4204 check_keepalived: Add 2nd stat file location 2023-05-04 08:23:34 +00:00
dependabot[bot]
bc49084211 build(deps): bump dawidd6/action-debian-package from 1.4.2 to 1.4.4
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.4.2 to 1.4.4.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.4.2...v1.4.4)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-04 08:23:02 +00:00
dependabot[bot]
269c6a9f04 build(deps): bump dawidd6/action-debian-package from 1.4.0 to 1.4.2
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-04 08:23:02 +00:00
waja
6fe739ced9
Merge pull request #42 from waja/dependabot-github_actions-dawidd6-action-debian-package-1.5.0 2023-03-07 06:07:17 +01:00
dependabot[bot]
9a8a43b5c6
build(deps): bump dawidd6/action-debian-package from 1.4.4 to 1.5.0
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.4.4 to 1.5.0.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.4.4...v1.5.0)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-07 05:00:23 +00:00
f9ed6fdc3d check_qnap_health: Update to latest version 2022-12-01 16:09:55 +00:00
waja
77e702f856
Merge pull request #41 from waja/dependabot-github_actions-dawidd6-action-debian-package-1.4.4
build(deps): bump dawidd6/action-debian-package from 1.4.2 to 1.4.4
2022-11-09 07:40:16 +01:00
dependabot[bot]
98f3635b9e
build(deps): bump dawidd6/action-debian-package from 1.4.2 to 1.4.4
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.4.2 to 1.4.4.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.4.2...v1.4.4)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-09 04:04:12 +00:00
waja
2438c22d4c
Merge pull request #40 from waja/dependabot-github_actions-dawidd6-action-debian-package-1.4.2
build(deps): bump dawidd6/action-debian-package from 1.4.0 to 1.4.2
2022-10-28 06:37:42 +02:00
dependabot[bot]
cfd4901b3c
build(deps): bump dawidd6/action-debian-package from 1.4.0 to 1.4.2
Bumps [dawidd6/action-debian-package](https://github.com/dawidd6/action-debian-package) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/dawidd6/action-debian-package/releases)
- [Commits](https://github.com/dawidd6/action-debian-package/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: dawidd6/action-debian-package
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-28 04:12:58 +00:00
685fadac6c Updating build pipelines 2022-10-20 13:06:19 +02:00
641 changed files with 19144 additions and 5639 deletions

View file

@ -17,19 +17,20 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
env:
DEBIAN_FRONTEND: "noninteractive"
- name: Remove github artefacts
run: |
rm -rf .git*
rm -rf .github*
- name: Adjust distibution in changelog file
run: |
sed -i '0,/restricted/s//stable/' debian/changelog
- name: Build Debian package
uses: dawidd6/action-debian-package@v1.4.0
uses: dawidd6/action-debian-package@v1.6.0
with:
artifacts_directory: debian/build/release/
os_distribution: testing
- name: Debug
run: |
ls -la

View file

@ -18,7 +18,7 @@ jobs:
release-id: ${{ steps.create_release.outputs.id }}
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install needed packages
run: |
if [ $(dpkg -l | grep -c dpkg-dev) -ne 1 ]; then sudo apt-get update && sudo apt-get install -y dpkg-dev; fi
@ -43,19 +43,20 @@ jobs:
needs: create-release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
env:
DEBIAN_FRONTEND: "noninteractive"
- name: Remove github artefacts
run: |
rm -rf .git*
rm -rf .github*
- name: Adjust distibution in changelog file
run: |
sed -i '0,/restricted/s//stable/' debian/changelog
- name: Build Debian package
uses: dawidd6/action-debian-package@v1.4.0
uses: dawidd6/action-debian-package@v1.6.0
with:
artifacts_directory: debian/build/release/
os_distribution: testing
# - name: Build Debian package
# uses: pi-top/action-debian-package@v0.2.0
# with:

3
check_bond/Makefile Normal file
View file

@ -0,0 +1,3 @@
#/usr/bin/make -f
include ../common.mk

149
check_bond/check_bond Normal file
View file

@ -0,0 +1,149 @@
#!/bin/bash
# Nagios plugin to monitor Nic Bonding state
#
# Based on check_bond.sh written by L.Gill 10/08/06 - V.1.0 as found on
# http://exchange.nagios.org/directory/Plugins/Operating-Systems/Linux/check-network-bonding/details
# currently I maintain my own version at https://github.com/aswen/nagios-plugins/blob/master/check_bond
# Copyright (c) 2010 L.Gill
# Copyright (c) 2011 Alexander Swen <a@swen.nu>
#
# 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.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
#
# Example configuration
#
# Typical this check is placed on a client and runs via nrpe
# So add this to nrpe.cfg:
# command[check_bond]=/usr/lib/nagios/plugins/check_bond
# This should warn when one of the slaves is down and go critical when the whole bond is not available.
# This plugin defaults to bond0. If you have multiple bonds you can tell the script so by adding -i <if>.
# It will also warn if the Currently Active Slave is not the expected primary interface,
# the default primary interface is eth0, You can override this with -p <if>
# -p can be a comma separated list like "-p eno49,eno50"
# if you have dont_blame_nrpe=1 set you can choose to
# command[check_bond]=/usr/lib/nagios/plugins/check_bond -i $ARG1$ -p $ARG2$
#
# define service {
# use generic-service
# service_description Bond state
# check_command check_nrpe!check_bond
# or
# check_command check_nrpe!check_bond!bond1
# or
# check_command check_nrpe!check_bond!bond1!eth1
#}
#
# ------------------------------------------
# ######## Script Modifications ##########
# ------------------------------------------
# Who When What
# --- ---- ----
# A.Swen 2011-09-07 Add support for other bond module than bond0 (defaults to bond0 however)
# A.Swen 2013-10-11 Remove some obsolete stuff and make the script shorter
# B.Potts 2017-01-16 Check and display expected primary interface on bond
# J.Guldmyr 2018-09-25 Check for a list of primary interfaces instead of a single one
#
#
# SETTINGS
# Default if is bond0
if=bond0
# Default pri is eth0
pri=eth0
# commands
GREP=/bin/grep
AWK=/usr/bin/gawk
LSMOD=/sbin/lsmod
# FUNCTIONS
get_options () {
[ $# -gt 0 ]||result 5
while getopts "i:p:" opt;do
case ${opt} in
i) export if=`echo ${OPTARG}` ;;
p) export pri=`echo ${OPTARG}` ;;
*) result 5;;
esac
done
}
result () {
case $1 in
0) echo "OK: - Bondingmode: $(grep "Bonding Mode:" /proc/net/bonding/${if}), active link: $2";;
1) echo "UNKNOWN: plugin error";rc=3;;
2) echo "CRITICAL: bonding module not loaded";rc=2;;
3) echo "WARNING: state of ${if} device $2 is $3";rc=1;;
4) echo "UNKNOWN: no bondinterface with name ${if} found";rc=3;;
5) echo "UNKNOWN: Usage: ${me} [-i <bond interface name>] [-p <expected primary interface name>]";rc=3;;
6) echo "CRITICAL: bondinterface ${if} has no active slaves";rc=2;;
7) echo "WARNING: Bondingmode: $(grep "Bonding Mode:" /proc/net/bonding/${if}), (unexpected) active link: $2";rc=1;;
8) echo "WARNING: bondinterface with name ${if} has less than 2 interfaces - so zero redundancy";rc=1;;
esac
}
# SCRIPT
# 1st set default return code:
rc=0
# test if this script was called correctly
[ $# -eq 1 -o $# -eq 3 -o $# -gt 4 ] && result 5
[ $rc -gt 0 ] && exit $rc
[ $# -eq 2 -o $# -eq 4 ] && get_options $@
[ $rc -gt 0 ] && exit $rc
# 1st we check if bonding module is loaded
[ "$(${LSMOD}|grep bonding)" = "" ] && result 2
[ $rc -gt 0 ] && exit $rc
# test if there is any bond interface with this name
[ -f "/proc/net/bonding/${if}" ] || result 4
[ $rc -gt 0 ] && exit $rc
case $(grep "Bonding Mode:" /proc/net/bonding/${if}) in
*"IEEE 802.3ad Dynamic link aggregation"*) bondingmode=lacp;;
*) bondingmode=masterslave;;
esac
# Inspect the state of the entire bond interface
if [ "$bondingmode" == "lacp" ]
then
ifstate=$(${AWK} '/MII Status:/ {print $3}' /proc/net/bonding/bond0 | head -n 1)
ifslavecount=$(${AWK} '/Slave Interface:/ {print $3}' /proc/net/bonding/bond0 | wc -l)
[ "${ifstate}" != "up" ]&& result 6
[[ "${pri}" =~ "${ifstate}" ]] || result 7 "${ifstate}"
[ ${ifslavecount} -lt 2 ]&& result 8
else
ifstate=$(${AWK} '/Currently Active Slave/ {print $4}' /proc/net/bonding/${if})
[ "${ifstate}" = "None" ]&& result 6
[[ "${pri}" =~ "${ifstate}" ]] || result 7 "${ifstate}"
[ $rc -gt 0 ] && exit $rc
fi
# test state of each if in bond
ethdevs=$(${AWK} '/Slave Interface/ {print $3}' /proc/net/bonding/${if})
for ethdev in ${ethdevs};do
state=$(${GREP} -A1 "Slave Interface: ${ethdev}" /proc/net/bonding/${if}|${AWK} '/MII Status:/ {print $3}')
if [ "${state}" != "up" ];then
result 3 ${ethdev} ${state}
fi
done
[ $rc -eq 0 ] && result 0 "${ifstate}"
exit $rc
#END

4
check_bond/control Normal file
View file

@ -0,0 +1,4 @@
Homepage: https://raw.githubusercontent.com/aswen/nagios-plugins/master/check_bond
Uploaders: Jan Wagner <waja@cyconet.org>
Description: plugin that checks for the status of bonding interfaces.
Recommends: gawk

17
check_bond/copyright Normal file
View file

@ -0,0 +1,17 @@
Copyright (c) 2010 L.Gill
Copyright (c) 2011 Alexander Swen <a@swen.nu>
License: ISC license
Permission to use, copy, modify, and/or 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.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -15,8 +15,8 @@ before_script:
script:
- ./check_es_system.sh --help || true
- |
test/test_status.sh
test/test_readonly.sh
- test/test_status.sh
- test/test_readonly.sh
- test/test_disk.sh

View file

@ -3,7 +3,7 @@
# Script: check_es_system.sh #
# Author: Claudio Kuenzler www.claudiokuenzler.com #
# Purpose: Monitor ElasticSearch Store (Disk) Usage #
# Official doc: www.claudiokuenzler.com/monitoring-plugins/check_es_system.php #
# Docs: www.claudiokuenzler.com/monitoring-plugins/check_es_system.php #
# License: GPLv2 #
# GNU General Public Licence (GPL) http://www.gnu.org/ #
# This program is free software; you can redistribute it and/or #
@ -19,14 +19,14 @@
# You should have received a copy of the GNU General Public License #
# along with this program; if not, see <https://www.gnu.org/licenses/>. #
# #
# Copyright 2016,2018-2021 Claudio Kuenzler #
# Copyright 2016,2018-2021,2023 Claudio Kuenzler #
# Copyright 2018 Tomas Barton #
# Copyright 2020 NotAProfessionalDeveloper #
# Copyright 2020 tatref #
# Copyright 2020 fbomj #
# Copyright 2021 chicco27 #
# #
# History: #
# History/Changelog: #
# 20160429: Started programming plugin #
# 20160601: Continued programming. Working now as it should =) #
# 20160906: Added memory usage check, check types option (-t) #
@ -59,6 +59,7 @@
# 20201125: Show names of read_only indexes with jq, set jq as default parser #
# 20210616: Fix authentication bug (#38) and non ES URL responding (#39) #
# 20211202: Added local node (-L), SSL settings (-K, -E), cpu check #
# 20230929: Bugfix in readonly check type for missing privileges #
################################################################################
#Variables and defaults
STATE_OK=0 # define the exit code if status is OK
@ -66,7 +67,7 @@ STATE_WARNING=1 # define the exit code if status is Warning
STATE_CRITICAL=2 # define the exit code if status is Critical
STATE_UNKNOWN=3 # define the exit code if status is Unknown
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin # Set path
version=1.12.0
version=1.12.1
port=9200
httpscheme=http
unit=G
@ -499,6 +500,10 @@ readonly) # Check Readonly status on given indexes
elif [[ $? -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ "$settings" =~ "is unauthorized" ]]; then
errormsg=$(echo "$settings" | json_parse -r -q -c -x error -x reason)
echo "ES SYSTEM CRITICAL - Access denied ($errormsg)"
exit $STATE_CRITICAL
fi
rocount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only | grep -c true)
roadcount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only_allow_delete | grep -c true)
@ -523,11 +528,12 @@ readonly) # Check Readonly status on given indexes
elif [[ $settingsrc -eq 28 ]]; then
echo "ES SYSTEM CRITICAL - server did not respond within ${max_time} seconds"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unable to authenticate") ]]; then
elif [[ -n $(echo "$settings" | grep -i "unable to authenticate") ]]; then
echo "ES SYSTEM CRITICAL - Unable to authenticate user $user for REST request"
exit $STATE_CRITICAL
elif [[ -n $(echo $esstatus | grep -i "unauthorized") ]]; then
echo "ES SYSTEM CRITICAL - User $user is unauthorized"
elif [[ "$settings" =~ "is unauthorized" ]]; then
errormsg=$(echo "$settings" | json_parse -r -q -c -x error -x reason)
echo "ES SYSTEM CRITICAL - Access denied ($errormsg)"
exit $STATE_CRITICAL
fi
rocount=$(echo $settings | json_parse -r -q -c -a -x settings -x index -x blocks -x read_only | grep -c true)

View file

@ -0,0 +1,18 @@
#!/bin/bash
echo "Test Elasticsearch status"
./check_es_system.sh -H 127.0.0.1 -P 9200 -t disk
output=$(./check_es_system.sh -H 127.0.0.1 -P 9200 -t disk)
if [[ $? -eq 0 ]]; then
echo -e "\e[1m\e[32m✔ Test 3.1 OK: Disk check worked and shows green\e[0m"
exitcode=0
else
echo -e "\e[1m\e[31m✘ Test 3.1 ERROR: Disk check has not worked\e[0m"
exitcode=1
fi
if ! [[ "${output}" =~ "ES SYSTEM OK - Disk usage is at 0%" ]]; then
exitcode=1
fi
exit $exitcode

View file

@ -1,6 +1,6 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Recommends: curl, jshon | jq
Version: 1.12.0
Version: 1.12.1
Homepage: https://github.com/Napsty/check_es_system/
Watch: https://github.com/Napsty/check_es_system/tags .*/v?(\d\S+)\.tar\.gz
Description: Plugin script to check the status of an ElasticSearch cluster node.

View file

@ -1 +1 @@
check_es_system-1.12.0/
check_es_system-1.12.1/

View file

@ -22,7 +22,7 @@
# Copyright (c) 2008 David Ligeret
# Copyright (c) 2009 Joshua Daniel Franklin
# Copyright (c) 2010 Branden Schneider
# Copyright (c) 2010-2021 Claudio Kuenzler
# Copyright (c) 2010-2022 Claudio Kuenzler
# Copyright (c) 2010 Samir Ibradzic
# Copyright (c) 2010 Aaron Rogers
# Copyright (c) 2011 Ludovic Hutin
@ -38,6 +38,7 @@
# Copyright (c) 2015 Stefan Roos
# Copyright (c) 2018 Peter Newman
# Copyright (c) 2020 Luca Berra
# Copyright (c) 2022 Marco Markgraf
#
# The VMware 4.1 CIM API is documented here:
# http://www.vmware.com/support/developer/cim-sdk/4.1/smash/cim_smash_410_prog.pdf
@ -284,7 +285,14 @@
#@ Author : Claudio Kuenzler
#@ Reason : Fix TLSv1 usage (issue #51)
#@---------------------------------------------------
#@ Date : 20220509
#@ Author : Marco Markgraf
#@ Reason : Added JSON-output (Zabbix needs it)
#@---------------------------------------------------
#@ Date : 20221230
#@ Author : Claudio Kuenzler
#@ Reason : Fix bug when missing S/N (issue #68)
#@---------------------------------------------------
from __future__ import print_function
import sys
@ -292,9 +300,10 @@ import time
import pywbem
import re
import pkg_resources
import json
from optparse import OptionParser,OptionGroup
version = '20210809'
version = '20221230'
NS = 'root/cimv2'
hosturl = ''
@ -342,6 +351,7 @@ sensor_Type = {
}
data = []
xdata = {}
perf_Prefix = {
1:'Pow',
@ -373,6 +383,10 @@ vendor='unknown'
# verbose
verbose=False
# output json
format='string'
pretty=False
# Produce performance data output for nagios
perfdata=False
@ -518,12 +532,20 @@ def verboseoutput(message) :
# ----------------------------------------------------------------------
def xdataprint():
if format == 'json' and not pretty:
print(json.dumps(xdata, sort_keys=True))
if format == 'json' and pretty:
print(json.dumps(xdata, sort_keys=True, indent=4))
# ----------------------------------------------------------------------
def getopts() :
global hosturl,hostname,cimport,sslproto,user,password,vendor,verbose,perfdata,urlise_country,timeout,ignore_list,regex,get_power,get_volts,get_current,get_temp,get_fan,get_lcd,get_intrusion
global hosturl,hostname,cimport,sslproto,user,password,vendor,verbose,perfdata,urlise_country,timeout,ignore_list,regex,get_power,get_volts,get_current,get_temp,get_fan,get_lcd,get_intrusion,format,pretty
usage = "usage: %prog -H hostname -U username -P password [-C port -S proto -V vendor -v -p -I XX -i list,list -r]\n" \
"example: %prog -H hostname -U root -P password -C 5989 -V auto -I uk\n\n" \
"or, verbosely:\n\n" \
"usage: %prog --host=hostname --user=username --pass=password [--cimport=port --sslproto=version --vendor=system --verbose --perfdata --html=XX]\n"
"usage: %prog --host=hostname --user=username --pass=password [--cimport=port --sslproto=version --vendor=system --verbose --perfdata --html=XX --format=json --pretty]\n"
parser = OptionParser(usage=usage, version="%prog "+version)
group1 = OptionGroup(parser, 'Mandatory parameters')
@ -564,6 +586,10 @@ def getopts() :
help="don't collect lcd/front display status")
group2.add_option("--no-intrusion", action="store_false", dest="get_intrusion", default=True, \
help="don't collect chassis intrusion status")
group2.add_option("--format", dest="format", help="'string' (default) or 'json'", \
metavar="FORMAT", type='choice', choices=['string','json'],default="string")
group2.add_option("--pretty", action="store_true", dest="pretty", default=False, \
help="return data as a pretty-printed json-array")
parser.add_option_group(group1)
parser.add_option_group(group2)
@ -610,14 +636,16 @@ def getopts() :
user=options.user
password=options.password
cimport=options.cimport
ignore_list=options.ignore.split(',')
format=options.format
pretty=options.pretty
perfdata=options.perfdata
regex=options.regex
sslproto=options.sslproto
timeout=options.timeout
urlise_country=options.urlise_country.lower()
vendor=options.vendor.lower()
verbose=options.verbose
perfdata=options.perfdata
urlise_country=options.urlise_country.lower()
timeout=options.timeout
ignore_list=options.ignore.split(',')
regex=options.regex
get_power=options.get_power
get_volts=options.get_volts
get_current=options.get_current
@ -778,7 +806,7 @@ for classe in ClassesToCheck :
verboseoutput("Check classe "+classe)
try:
instance_list = wbemclient.EnumerateInstances(classe)
except pywbem.cim_operations.CIMError as args:
except pywbem._cim_operations.CIMError as args:
if ( args[1].find('Socket error') >= 0 ):
print("UNKNOWN: {}".format(args))
sys.exit (ExitUnknown)
@ -791,7 +819,7 @@ for classe in ClassesToCheck :
GlobalStatus = ExitUnknown
print("UNKNOWN: {}".format(args))
sys.exit (GlobalStatus)
except pywbem.cim_http.AuthError as arg:
except pywbem._cim_http.AuthError as arg:
verboseoutput("Global exit set to UNKNOWN")
GlobalStatus = ExitUnknown
print("UNKNOWN: Authentication Error")
@ -823,6 +851,8 @@ for classe in ClassesToCheck :
+ str(instance[u'ReleaseDate'].datetime.date())
verboseoutput(" VersionString = "+instance[u'VersionString'])
xdata['Bios Info'] = bios_info
elif elementName == 'Chassis' :
man = instance[u'Manufacturer']
if man is None :
@ -837,7 +867,7 @@ for classe in ClassesToCheck :
model = instance[u'Model']
if model:
verboseoutput(" Model = "+model)
server_info += model + ' s/n:'
server_info += model
elif elementName == 'Server Blade' :
SerialNumber = instance[u'SerialNumber']
@ -845,6 +875,8 @@ for classe in ClassesToCheck :
verboseoutput(" SerialNumber = "+SerialNumber)
isblade = "yes"
xdata['SerialNumber'] = SerialNumber
# Report detail of Numeric Sensors and generate nagios perfdata
if classe == "CIM_NumericSensor" :
@ -886,27 +918,33 @@ for classe in ClassesToCheck :
if units == 7: # Watts
if get_power:
data.append( ("%s=%g;%g;%g " % (perf_el, cr, utnc, utc),1) )
xdata[perf_el] = { 'Unit': 'Watt', 'Value': cr, 'warn' : utnc, 'crit': utc }
elif units == 6: # Current
if get_current:
data.append( ("%s=%g;%g;%g " % (perf_el, cr, utnc, utc),3) )
xdata[perf_el] = { 'Unit': 'Ampere', 'Value': cr, 'warn' : utnc, 'crit': utc }
# PSU Voltage
elif sensorType == 3: # Voltage
if get_volts:
data.append( ("%s=%g;%g;%g " % (perf_el, cr, utnc, utc),2) )
xdata[perf_el] = { 'Unit': 'Volt', 'Value': cr, 'warn' : utnc, 'crit': utc }
# Temperatures
elif sensorType == 2: # Temperature
if get_temp:
data.append( ("%s=%g;%g;%g " % (perf_el, cr, utnc, utc),4) )
xdata[perf_el] = { 'Value': cr, 'warn' : utnc, 'crit': utc }
# Fan speeds
elif sensorType == 5: # Tachometer
if get_fan:
if units == 65: # percentage
data.append( ("%s=%g%%;%g;%g " % (perf_el, cr, utnc, utc),6) )
xdata[perf_el] = { 'Unit': '%', 'Value': cr, 'warn' : utnc, 'crit': utc }
else:
data.append( ("%s=%g;%g;%g " % (perf_el, cr, utnc, utc),5) )
xdata[perf_el] = { 'Value': cr, 'warn' : utnc, 'crit': utc }
elif classe == "CIM_Processor" :
verboseoutput(" Family = %d" % instance['Family'])
@ -1002,6 +1040,7 @@ if (urlise_country != '') :
# If this is a blade server, also output chassis serial number as additional info
if (isblade == "yes") :
SerialNumber += " Chassis S/N: %s " % (SerialChassis)
xdata['ChassisSerialNumber'] = SerialChassis
# Output performance data
perf = '|'
@ -1027,13 +1066,24 @@ if perf == '|':
if sslproto:
os.remove(sslconfpath)
xdata['GlobalStatus'] = GlobalStatus
if GlobalStatus == ExitOK :
print("OK - Server: %s %s %s%s" % (server_info, SerialNumber, bios_info, perf))
if format == 'string':
print("OK - Server: %s s/n: %s %s%s" % (server_info, SerialNumber, bios_info, perf))
else:
xdataprint()
elif GlobalStatus == ExitUnknown :
if format == 'string':
print("UNKNOWN: %s" % (ExitMsg)) #ARR
else:
xdataprint()
else:
print("%s - Server: %s %s %s%s" % (ExitMsg, server_info, SerialNumber, bios_info, perf))
if format == 'string':
print("%s - Server: %s %s %s%s" % (ExitMsg, server_info, 's/n: ' + SerialNumber, bios_info, perf))
else:
xdataprint()
sys.exit (GlobalStatus)

View file

@ -1,6 +1,6 @@
Uploaders: Jan Wagner <waja@cyconet.org>
Recommends: python3-minimal, python-pywbem
Version: 20210809
Version: 20221230
Homepage: https://github.com/Napsty/check_esxi_hardware
Watch: https://github.com/Napsty/check_esxi_hardware/tags .*/v?(\d\S+)\.tar\.gz
Description: Plugin for checking global health of VMware ESX/ESXi host

View file

@ -81,7 +81,7 @@ while [ "$1" != "" ]; do
done
# Config and commands
STAT_FILE='/tmp/keepalived.status'
STAT_FILE='/var/run/keepalived.status'
PID_FILE='/run/keepalived.pid'
PID=$("${CAT}" "${PID_FILE}" 2>/dev/null)
SERVICE=$("${PG}" keepalived)
@ -92,8 +92,13 @@ CHECK_HAIP2=$("${IP}" 2>/dev/null addr sh "${IFACE2}" | "${GREP}" "${HAIP2}" | "
# Check files are valid
if [ ! -e "${STAT_FILE}" ]
then
if [ -e /tmp/keepalived.status ]
then
STAT_FILE='/tmp/keepalived.status'
else
echo "CRITICAL: Generated status file is missing. State could not be determined."
exit "${CRITICAL}"
fi
fi
FILE_CONT=$("${CAT}" "${STAT_FILE}" 2>/dev/null)

View file

@ -1,11 +1,13 @@
# check_nextcloud
# Nagios/Centron check | Nextcloud serverinfo
Nagios/Centreon plugin for nextcloud serverinfo API (https://github.com/nextcloud/serverinfo)
This branch contains the check for Python 3. A version for Python 2.7 can be found [here](https://github.com/BornToBeRoot/check_nextcloud/tree/stable-python2.7).
## Syntax / Help
```
./check_nextcloud.py -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|users]
./check_nextcloud.py -u username -p password -H cloud.example.com -c [system|storage|shares|webserver|php|database|users|apps]
Options:
@ -16,12 +18,14 @@ Options:
on the nextcloud server
-p PASSWORD, --password=PASSWORD
Password of the user
-t TOKEN, --nc-token=TOKEN
NC-Token for the Serverinfo API
-H HOSTNAME, --hostname=HOSTNAME
Nextcloud server address (make sure that the address
is a trusted domain in the config.php)
-c CHECK, --check=CHECK
The thing you want to check
[system|storage|shares|webserver|php|database|activeUsers|uploadFilesize]
[system|storage|shares|webserver|php|database|activeUsers|uploadFilesize|apps]
--upload-filesize Filesize in MiB, GiB without spaces (default="512.0GiB")
--protocol=PROTOCOL Protocol you want to use [http|https]
(default="https")
@ -76,3 +80,77 @@ OK - Upload max filesize: 2.0GiB
CRITICAL - Upload max filesize is set to 512.0MiB, but should be 2.0GiB
```
## Icinga config example
Adjust the command path to your local situation.
```
object CheckCommand "check_nextcloud" {
command = [ "/var/lib/nagios/src/check_nextcloud/check/check_nextcloud.py" ]
arguments = {
"--nc-token" = {
value = "$nextcloud_token$"
description = "NC-Token for the Serverinfo API"
}
"--hostname" = {
value = "$nextcloud_hostname$"
description = "Hostname"
}
"--api-url" = {
value = "$nextcloud_api_url$"
set_if = "$nextcloud_api_url$"
description = "Api-url"
}
"--check" = {
value = "$nextcloud_check$"
description = "Which check to run"
}
"--perfdata-format" = {
value = "nagios"
description = "The perfdata format we like"
}
}
}
```
```
apply Service for (checkname in ["system","storage","shares","webserver","php","database","activeUsers","uploadFilesize","apps"]) {
import "generic-service"
name = "check-nextcloud-" + checkname
check_interval = 30m
retry_interval = 10m
display_name = "Nextcloud monitor " + checkname
vars.notification_interval = 1d
vars.nextcloud_check = checkname
vars.nextcloud_hostname = host.vars.nextcloud_hostname
vars.nextcloud_token = host.vars.nextcloud_token
vars.nextcloud_api_url = host.vars.nextcloud_api_url
vars.notification["mail"] = { }
check_command = "check_nextcloud"
assign where (host.address || host.address6) && host.vars.nextcloud_token
}
```
```
object Host "server42.example.com" {
display_name = "My Nextcloud server"
address = "<IP>"
...
# The token can be set with: occ config:app:set serverinfo token --value yourtoken
vars.nextcloud_token = "XXX"
vars.nextcloud_hostname = "nextcloud.example.com"
# Optional if you e.g. use a subdirectory.
vars.nextcloud_api_url = "/subdir/ocs/v2.php/apps/serverinfo/api/v1/info"
}
```

View file

@ -59,7 +59,7 @@ parser.add_option('--upload-filesize', dest='upload_filesize', default='512.0MiB
parser.add_option('--protocol', dest='protocol', choices=['https', 'http'], default='https', help='Protocol you want to use [http|https] (default="https")')
parser.add_option('--ignore-proxy', dest='ignore_proxy', default=False, action='store_true', help='Ignore any configured proxy server on this system for this request (default="false")')
parser.add_option('--ignore-sslcert', dest='ignore_sslcert', default=False, action='store_true', help='Ignore ssl certificate (default="false")')
parser.add_option('--api-url', dest='api_url', type='string', default='/ocs/v2.php/apps/serverinfo/api/v1/info', help='Url of the api (default="/ocs/v2.php/apps/serverinfo/api/v1/info")')
parser.add_option('--api-url', dest='api_url', type='string', default='/ocs/v2.php/apps/serverinfo/api/v1/info?skipApps=false&skipUpdate=false', help='Url of the api (default="/ocs/v2.php/apps/serverinfo/api/v1/info?skipApps=false&skipUpdate=false")')
(options, args) = parser.parse_args()
@ -283,7 +283,10 @@ if options.check == 'uploadFilesize':
if options.check == 'apps':
xml_apps = xml_root.find('data').find('nextcloud').find('system').find('apps')
if xml_apps is not None:
xml_apps_num_updates_available = int(xml_apps.find('num_updates_available').text)
else:
xml_apps_num_updates_available = 0
if xml_apps_num_updates_available == 0:
print('OK - No apps requiring update')

View file

@ -1,656 +0,0 @@
package Monitoring::GLPlugin::SNMP::MibsAndOids::HUAWEIENTITYEXTENTMIB;
$Monitoring::GLPlugin::SNMP::MibsAndOids::origin->{'HUAWEI-ENTITY-EXTENT-MIB'} = {
url => '',
name => 'HUAWEI-ENTITY-EXTENT-MIB',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'HUAWEI-ENTITY-EXTENT-MIB'} = {
hwEntityExtentMIB => '1.3.6.1.4.1.2011.5.25.31',
hwEntityExtObjects => '1.3.6.1.4.1.2011.5.25.31.1',
hwEntityState => '1.3.6.1.4.1.2011.5.25.31.1.1',
hwEntityStateTable => '1.3.6.1.4.1.2011.5.25.31.1.1.1',
hwEntityStateEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1',
hwEntityAdminStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.1',
hwEntityAdminStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::HwAdminState',
hwEntityOperStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.2',
hwEntityOperStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::HwOperState',
hwEntityStandbyStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.3',
hwEntityStandbyStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::HwStandbyStatus',
hwEntityAlarmLight => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.4',
hwEntityCpuUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5',
hwEntityCpuUsageThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.6',
hwEntityMemUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7',
hwEntityMemUsageThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.8',
hwEntityMemSize => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.9',
hwEntityUpTime => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.10',
hwEntityTemperature => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11',
hwEntityTemperatureThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.12',
hwEntityVoltage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.13',
hwEntityVoltageLowThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.14',
hwEntityVoltageHighThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.15',
hwEntityTemperatureLowThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.16',
hwEntityOpticalPower => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.17',
hwEntityCurrent => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.18',
hwEntityMemSizeMega => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.19',
hwEntityPortType => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.20',
hwEntityPortTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityPortType',
hwEntityDuplex => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.21',
hwEntityDuplexDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityDuplex',
hwEntityOpticalPowerRx => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.22',
hwEntityCpuUsageLowThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.23',
hwEntityBoardPower => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.24',
hwEntityCpuFrequency => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.25',
hwEntitySupportFlexCard => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.26',
hwEntitySupportFlexCardDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntitySupportFlexCard',
hwEntityBoardClass => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.27',
hwEntityBoardClassDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityBoardClass',
hwNseOpmStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.28',
hwEntityCpuMaxUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.29',
hwEntityCPUType => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.30',
hwEntityMemoryType => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.31',
hwEntityFlashSize => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.32',
hwEntityIfUpTimes => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.33',
hwEntityIfDownTimes => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.34',
hwEntityCPUAvgUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.35',
hwEntityMemoryAvgUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.36',
hwEntityMemUsed => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.37',
hwEntityTotalFanNum => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.38',
hwEntityNomalFanNum => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.39',
hwEntityTotalPwrNum => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.40',
hwEntityNomalPwrNum => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.41',
hwEntityFaultLight => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.42',
hwEntityFaultLightDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityFaultLight',
hwEntityBoardName => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.43',
hwEntityBoardDescription => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.44',
hwEntity5MinCpuUsage => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.45',
hwEntityStartMode => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.46',
hwEntityStartModeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityStartMode',
hwEntitySplitAttribute => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.47',
hwEntityFaultLightKeepTime => '1.3.6.1.4.1.2011.5.25.31.1.1.1.1.48',
hwRUModuleInfoTable => '1.3.6.1.4.1.2011.5.25.31.1.1.2',
hwRUModuleInfoEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1',
hwEntityBomId => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.1',
hwEntityBomEnDesc => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.2',
hwEntityBomLocalDesc => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.3',
hwEntityManufacturedDate => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.4',
hwEntityManufactureCode => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.5',
hwEntityCLEICode => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.6',
hwEntityUpdateLog => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.7',
hwEntityArchivesInfoVersion => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.8',
hwEntityOpenBomId => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.9',
hwEntityIssueNum => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.10',
hwEntityBoardType => '1.3.6.1.4.1.2011.5.25.31.1.1.2.1.11',
hwOpticalModuleInfoTable => '1.3.6.1.4.1.2011.5.25.31.1.1.3',
hwOpticalModuleInfoEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1',
hwEntityOpticalMode => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.1',
hwEntityOpticalModeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalMode',
hwEntityOpticalWaveLength => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.2',
hwEntityOpticalTransDistance => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.3',
hwEntityOpticalVendorSn => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.4',
hwEntityOpticalTemperature => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.5',
hwEntityOpticalVoltage => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.6',
hwEntityOpticalBiasCurrent => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.7',
hwEntityOpticalRxPower => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.8',
hwEntityOpticalTxPower => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.9',
hwEntityOpticalType => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.10',
hwEntityOpticalTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalType',
hwEntityOpticalTransBW => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.11',
hwEntityOpticalFiberType => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.12',
hwEntityOpticalFiberTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalFiberType',
hwEntityOpticalRxLowThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.13',
hwEntityOpticalRxHighThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.14',
hwEntityOpticalTxLowThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.15',
hwEntityOpticalTxHighThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.16',
hwEntityOpticalPlug => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.17',
hwEntityOpticalPlugDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalPlug',
hwEntityOpticalDirectionType => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.18',
hwEntityOpticalDirectionTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalDirectionType',
hwEntityOpticalUserEeprom => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.19',
hwEntityOpticalRxLowWarnThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.20',
hwEntityOpticalRxHighWarnThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.21',
hwEntityOpticalTxLowWarnThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.22',
hwEntityOpticalTxHighWarnThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.23',
hwEntityOpticalVenderName => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.24',
hwEntityOpticalVenderPn => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.25',
hwEntityOpticalAuthenticationStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.26',
hwEntityOpticalAuthenticationStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalAuthenticationStatus',
hwEntityOpticalTunableType => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.27',
hwEntityOpticalTunableTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalTunableType',
hwEntityOpticalWaveLengthDecimal => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.28',
hwEntityOpticalTunableModuleChannel => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.29',
hwEntityOpticalWaveBand => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.30',
hwEntityOpticalWaveBandDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityOpticalWaveBand',
hwEntityOpticalLaneBiasCurrent => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.31',
hwEntityOpticalLaneRxPower => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.32',
hwEntityOpticalLaneTxPower => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.33',
hwEntityOpticalVendorOUI => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.34',
hwEntityOpticalVendorRev => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.35',
hwEntityOpticalGponSN => '1.3.6.1.4.1.2011.5.25.31.1.1.3.1.36',
hwMonitorInputTable => '1.3.6.1.4.1.2011.5.25.31.1.1.4',
hwMonitorInputEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1',
hwMonitorInputIndex => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1.1',
hwMonitorInputName => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1.2',
hwMonitorInputState => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1.3',
hwMonitorInputStateEnable => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1.4',
hwMonitorInputRowStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.4.1.5',
hwMonitorOutputTable => '1.3.6.1.4.1.2011.5.25.31.1.1.5',
hwMonitorOutputEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1',
hwMonitorOutputIndex => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1.1',
hwMonitorOutputRuleIndex => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1.2',
hwMonitorOutputMask => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1.3',
hwMonitorOutputKey => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1.4',
hwMonitorOutputRowStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.5.1.5',
hwEntPowerUsedInfoTable => '1.3.6.1.4.1.2011.5.25.31.1.1.6',
hwEntPowerUsedInfoEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.6.1',
hwEntPowerUsedInfoBoardName => '1.3.6.1.4.1.2011.5.25.31.1.1.6.1.1',
hwEntPowerUsedInfoBoardType => '1.3.6.1.4.1.2011.5.25.31.1.1.6.1.2',
hwEntPowerUsedInfoBoardSlot => '1.3.6.1.4.1.2011.5.25.31.1.1.6.1.3',
hwEntPowerUsedInfoPower => '1.3.6.1.4.1.2011.5.25.31.1.1.6.1.4',
hwVirtualCableTestTable => '1.3.6.1.4.1.2011.5.25.31.1.1.7',
hwVirtualCableTestEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1',
hwVirtualCableTestIfIndex => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.1',
hwVirtualCableTestPairStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.2',
hwVirtualCableTestPairStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestPairStatus',
hwVirtualCableTestPairLength => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.3',
hwVirtualCableTestOperation => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.4',
hwVirtualCableTestOperationDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestOperation',
hwVirtualCableTestLastTime => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.5',
hwVirtualCableTestPairAStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.6',
hwVirtualCableTestPairAStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestPairAStatus',
hwVirtualCableTestPairBStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.7',
hwVirtualCableTestPairBStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestPairBStatus',
hwVirtualCableTestPairCStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.8',
hwVirtualCableTestPairCStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestPairCStatus',
hwVirtualCableTestPairDStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.9',
hwVirtualCableTestPairDStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwVirtualCableTestPairDStatus',
hwVirtualCableTestPairALength => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.10',
hwVirtualCableTestPairBLength => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.11',
hwVirtualCableTestPairCLength => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.12',
hwVirtualCableTestPairDLength => '1.3.6.1.4.1.2011.5.25.31.1.1.7.1.13',
hwTemperatureThresholdTable => '1.3.6.1.4.1.2011.5.25.31.1.1.8',
hwTemperatureThresholdEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1',
hwEntityTempSlotId => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.1',
hwEntityTempI2CId => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.2',
hwEntityTempAddr => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.3',
hwEntityTempChannel => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.4',
hwEntityTempStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.5',
hwEntityTempStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityTempStatus',
hwEntityTempValue => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.6',
hwEntityTempMinorAlmThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.7',
hwEntityTempMajorAlmThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.8',
hwEntityTempFatalAlmThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.8.1.9',
hwVoltageInfoTable => '1.3.6.1.4.1.2011.5.25.31.1.1.9',
hwVoltageInfoEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1',
hwEntityVolSlot => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.1',
hwEntityVolI2CId => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.2',
hwEntityVolAddr => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.3',
hwEntityVolChannel => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.4',
hwEntityVolStatus => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.5',
hwEntityVolStatusDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityVolStatus',
hwEntityVolRequired => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.6',
hwEntityVolCurValue => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.7',
hwEntityVolRatio => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.8',
hwEntityVolLowAlmMajor => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.9',
hwEntityVolLowAlmFatal => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.10',
hwEntityVolHighAlmMajor => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.11',
hwEntityVolHighAlmFatal => '1.3.6.1.4.1.2011.5.25.31.1.1.9.1.12',
hwFanStatusTable => '1.3.6.1.4.1.2011.5.25.31.1.1.10',
hwFanStatusEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1',
hwEntityFanSlot => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.1',
hwEntityFanSn => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.2',
hwEntityFanReg => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.3',
hwEntityFanRegDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityFanReg',
hwEntityFanSpdAdjMode => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.4',
hwEntityFanSpdAdjModeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityFanSpdAdjMode',
hwEntityFanSpeed => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.5',
hwEntityFanPresent => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.6',
hwEntityFanPresentDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityFanPresent',
hwEntityFanState => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.7',
hwEntityFanStateDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityFanState',
hwEntityFanDesc => '1.3.6.1.4.1.2011.5.25.31.1.1.10.1.8',
hwEntityGlobalPara => '1.3.6.1.4.1.2011.5.25.31.1.1.11',
hwEntityServiceType => '1.3.6.1.4.1.2011.5.25.31.1.1.11.1',
hwEntityServiceTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityServiceType',
hwDeviceServiceType => '1.3.6.1.4.1.2011.5.25.31.1.1.11.2',
hwEntityManufacturerOUI => '1.3.6.1.4.1.2011.5.25.31.1.1.11.3',
hwPortBip8StatisticsTable => '1.3.6.1.4.1.2011.5.25.31.1.1.12',
hwPortBip8StatisticsEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1',
hwPhysicalPortBip8StatisticsEB => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.1',
hwPhysicalPortBip8StatisticsES => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.2',
hwPhysicalPortBip8StatisticsSES => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.3',
hwPhysicalPortBip8StatisticsUAS => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.4',
hwPhysicalPortBip8StatisticsBBE => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.5',
hwPhysicalPortSpeed => '1.3.6.1.4.1.2011.5.25.31.1.1.12.1.6',
hwStorageEntTable => '1.3.6.1.4.1.2011.5.25.31.1.1.13',
hwStorageEntEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1',
hwStorageEntIndex => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.1',
hwStorageEntType => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.2',
hwStorageEntSpace => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.3',
hwStorageEntSpaceFree => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.4',
hwStorageEntName => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.5',
hwStorageEntDescr => '1.3.6.1.4.1.2011.5.25.31.1.1.13.1.6',
hwSystemPowerTable => '1.3.6.1.4.1.2011.5.25.31.1.1.14',
hwSystemPowerEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1',
hwSystemPowerDeviceID => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1.1',
hwSystemPowerTotalPower => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1.2',
hwSystemPowerUsedPower => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1.3',
hwSystemPowerRemainPower => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1.4',
hwSystemPowerReservedPower => '1.3.6.1.4.1.2011.5.25.31.1.1.14.1.5',
hwBatteryInfoTable => '1.3.6.1.4.1.2011.5.25.31.1.1.15',
hwBatteryInfoEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1',
hwBatteryState => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.1',
hwBatteryStateDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwBatteryState',
hwBatteryTemperatureLow => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.2',
hwBatteryTemperatureHigh => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.3',
hwBatteryRemainPercent => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.4',
hwBatteryRemainTime => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.5',
hwBatteryElecTimes => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.6',
hwBatteryLifeThreshold => '1.3.6.1.4.1.2011.5.25.31.1.1.15.1.7',
hwGPSLocationInfo => '1.3.6.1.4.1.2011.5.25.31.1.1.16',
hwGPSLongitude => '1.3.6.1.4.1.2011.5.25.31.1.1.16.1',
hwGPSLatitude => '1.3.6.1.4.1.2011.5.25.31.1.1.16.2',
hwGPSVelocity => '1.3.6.1.4.1.2011.5.25.31.1.1.16.3',
hwAdmPortTable => '1.3.6.1.4.1.2011.5.25.31.1.1.17',
hwAdmPortEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.17.1',
hwAdmPortDescription => '1.3.6.1.4.1.2011.5.25.31.1.1.17.1.1',
hwPwrStatusTable => '1.3.6.1.4.1.2011.5.25.31.1.1.18',
hwPwrStatusEntry => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1',
hwEntityPwrSlot => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.1',
hwEntityPwrSn => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.2',
hwEntityPwrReg => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.3',
hwEntityPwrRegDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityPwrReg',
hwEntityPwrMode => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.4',
hwEntityPwrModeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityPwrMode',
hwEntityPwrPresent => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.5',
hwEntityPwrPresentDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityPwrPresent',
hwEntityPwrState => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.6',
hwEntityPwrStateDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityPwrState',
hwEntityPwrCurrent => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.7',
hwEntityPwrVoltage => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.8',
hwEntityPwrDesc => '1.3.6.1.4.1.2011.5.25.31.1.1.18.1.9',
hwEntityPhysicalSpecTable => '1.3.6.1.4.1.2011.5.25.31.1.2',
hwEntityPhysicalSpecRack => '1.3.6.1.4.1.2011.5.25.31.1.2.1',
hwEntityPhysicalSpecFrame => '1.3.6.1.4.1.2011.5.25.31.1.2.2',
hwEntityPhysicalSpecSlot => '1.3.6.1.4.1.2011.5.25.31.1.2.3',
hwEntityPhysicalSpecBoard => '1.3.6.1.4.1.2011.5.25.31.1.2.4',
hwEntityPhysicalSpecSubSlot => '1.3.6.1.4.1.2011.5.25.31.1.2.5',
hwEntityPhysicalSpecSubBoard => '1.3.6.1.4.1.2011.5.25.31.1.2.6',
hwEntityPhysicalSpecPort => '1.3.6.1.4.1.2011.5.25.31.1.2.7',
hwEntityPhysicalSpecEmu => '1.3.6.1.4.1.2011.5.25.31.1.2.8',
hwEntityPhysicalSpecPowerframe => '1.3.6.1.4.1.2011.5.25.31.1.2.9',
hwEntityPhysicalSpecPowermodule => '1.3.6.1.4.1.2011.5.25.31.1.2.10',
hwEntityPhysicalSpecBattery => '1.3.6.1.4.1.2011.5.25.31.1.2.11',
hwEntityExtTraps => '1.3.6.1.4.1.2011.5.25.31.2',
hwEntityExtTrapsPrefix => '1.3.6.1.4.1.2011.5.25.31.2.0',
hwEntityExtTrapObject => '1.3.6.1.4.1.2011.5.25.31.2.1',
hwEntityExtTrapBaseSoftwareVersion => '1.3.6.1.4.1.2011.5.25.31.2.1.1',
hwEntityExtTrapBoardSoftwareVersion => '1.3.6.1.4.1.2011.5.25.31.2.1.2',
hwPhysicalName => '1.3.6.1.4.1.2011.5.25.31.2.1.3',
hwEntityExtTrap => '1.3.6.1.4.1.2011.5.25.31.2.2',
hwDevicePowerInfoObjects => '1.3.6.1.4.1.2011.5.25.31.3',
hwDevicePowerInfoTotalPower => '1.3.6.1.4.1.2011.5.25.31.3.1',
hwDevicePowerInfoUsedPower => '1.3.6.1.4.1.2011.5.25.31.3.2',
hwEntityExtConformance => '1.3.6.1.4.1.2011.5.25.31.4',
hwEntityExtCompliances => '1.3.6.1.4.1.2011.5.25.31.4.1',
hwEntityExtGroups => '1.3.6.1.4.1.2011.5.25.31.4.2',
hwPnpObjects => '1.3.6.1.4.1.2011.5.25.31.5',
hwPnpInfo => '1.3.6.1.4.1.2011.5.25.31.5.1',
hwHardwareCapaSequenceNo => '1.3.6.1.4.1.2011.5.25.31.5.1.1',
hwAlarmPnPSequenceNo => '1.3.6.1.4.1.2011.5.25.31.5.1.2',
hwPnpTraps => '1.3.6.1.4.1.2011.5.25.31.5.2',
hwPnpOperateTable => '1.3.6.1.4.1.2011.5.25.31.5.3',
hwPnpOperateEntry => '1.3.6.1.4.1.2011.5.25.31.5.3.1',
hwFileGeneIndex => '1.3.6.1.4.1.2011.5.25.31.5.3.1.1',
hwFileGeneOperState => '1.3.6.1.4.1.2011.5.25.31.5.3.1.2',
hwFileGeneOperStateDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwFileGeneOperState',
hwFileGeneResourceType => '1.3.6.1.4.1.2011.5.25.31.5.3.1.3',
hwFileGeneResourceTypeDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwFileGeneResourceType',
hwFileGeneResourceID => '1.3.6.1.4.1.2011.5.25.31.5.3.1.4',
hwFileGeneDestinationFile => '1.3.6.1.4.1.2011.5.25.31.5.3.1.5',
hwFileGeneRowStatus => '1.3.6.1.4.1.2011.5.25.31.5.3.1.6',
hwSystemGlobalObjects => '1.3.6.1.4.1.2011.5.25.31.6',
hwEntitySystemNetID => '1.3.6.1.4.1.2011.5.25.31.6.1',
hwEntitySoftwareName => '1.3.6.1.4.1.2011.5.25.31.6.2',
hwEntitySoftwareVersion => '1.3.6.1.4.1.2011.5.25.31.6.3',
hwEntitySoftwareVendor => '1.3.6.1.4.1.2011.5.25.31.6.4',
hwEntitySystemModel => '1.3.6.1.4.1.2011.5.25.31.6.5',
hwEntitySystemTime => '1.3.6.1.4.1.2011.5.25.31.6.6',
hwEntitySystemMacAddress => '1.3.6.1.4.1.2011.5.25.31.6.7',
hwEntitySystemReset => '1.3.6.1.4.1.2011.5.25.31.6.8',
hwEntitySystemResetDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntitySystemReset',
hwEntitySystemHealthInterval => '1.3.6.1.4.1.2011.5.25.31.6.9',
hwEntitySystemNEId => '1.3.6.1.4.1.2011.5.25.31.6.10',
hwEntitySystemServiceType => '1.3.6.1.4.1.2011.5.25.31.6.11',
hwHeartbeatObjects => '1.3.6.1.4.1.2011.5.25.31.7',
hwHeartbeatConfig => '1.3.6.1.4.1.2011.5.25.31.7.1',
hwEntityHeartbeatOnOff => '1.3.6.1.4.1.2011.5.25.31.7.1.1',
hwEntityHeartbeatOnOffDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwEntityHeartbeatOnOff',
hwEntityHeartbeatPeriod => '1.3.6.1.4.1.2011.5.25.31.7.1.2',
hwHeartbeatTrapPrefix => '1.3.6.1.4.1.2011.5.25.31.7.2',
hwPreDisposeObjects => '1.3.6.1.4.1.2011.5.25.31.8',
hwPreDisposeInfo => '1.3.6.1.4.1.2011.5.25.31.8.1',
hwPreDisposeSequenceNo => '1.3.6.1.4.1.2011.5.25.31.8.1.1',
hwPreDisposedTraps => '1.3.6.1.4.1.2011.5.25.31.8.2',
hwPreDisposeConfigTable => '1.3.6.1.4.1.2011.5.25.31.8.3',
hwPreDisposeConfigEntry => '1.3.6.1.4.1.2011.5.25.31.8.3.1',
hwDisposeSlot => '1.3.6.1.4.1.2011.5.25.31.8.3.1.1',
hwDisposeCardId => '1.3.6.1.4.1.2011.5.25.31.8.3.1.2',
hwDisposeSbom => '1.3.6.1.4.1.2011.5.25.31.8.3.1.3',
hwDisposeRowStatus => '1.3.6.1.4.1.2011.5.25.31.8.3.1.4',
hwDisposeOperState => '1.3.6.1.4.1.2011.5.25.31.8.3.1.5',
hwDisposeOperStateDefinition => 'HUAWEI-ENTITY-EXTENT-MIB::hwDisposeOperState',
hwPreDisposeEntInfoTable => '1.3.6.1.4.1.2011.5.25.31.8.4',
hwPreDisposeEntInfoEntry => '1.3.6.1.4.1.2011.5.25.31.8.4.1',
hwDisposeEntPhysicalIndex => '1.3.6.1.4.1.2011.5.25.31.8.4.1.1',
hwDisposeEntPhysicalDescr => '1.3.6.1.4.1.2011.5.25.31.8.4.1.2',
hwDisposeEntPhysicalVendorType => '1.3.6.1.4.1.2011.5.25.31.8.4.1.3',
hwDisposeEntPhysicalContainedIn => '1.3.6.1.4.1.2011.5.25.31.8.4.1.4',
hwDisposeEntPhysicalClass => '1.3.6.1.4.1.2011.5.25.31.8.4.1.5',
hwDisposeEntPhysicalParentRelPos => '1.3.6.1.4.1.2011.5.25.31.8.4.1.6',
hwDisposeEntPhysicalName => '1.3.6.1.4.1.2011.5.25.31.8.4.1.7',
hwOSPUnifyManageObjects => '1.3.6.1.4.1.2011.5.25.31.9',
hwEntityExtOSPTrapsPrefix => '1.3.6.1.4.1.2011.5.25.31.9.1',
};
$Monitoring::GLPlugin::SNMP::MibsAndOids::definitions->{'HUAWEI-ENTITY-EXTENT-MIB'} = {
HwAdminState => {
'1' => 'notSupported',
'2' => 'locked',
'3' => 'shuttingDown',
'4' => 'unlocked',
'11' => 'up',
'12' => 'down',
'13' => 'loopback',
},
HwOperState => {
'1' => 'notSupported',
'2' => 'disabled',
'3' => 'enabled',
'4' => 'offline',
'11' => 'up',
'12' => 'down',
'13' => 'connect',
'15' => 'protocolUp',
'16' => 'linkUp',
'17' => 'linkDown',
},
HwStandbyStatus => {
'1' => 'notSupported',
'2' => 'hotStandby',
'3' => 'coldStandby',
'4' => 'providingService',
},
hwEntitySupportFlexCard => {
'1' => 'notSupported',
'2' => 'flexible',
'3' => 'unflexible',
'4' => 'dummy',
},
hwEntityDuplex => {
'1' => 'notSupported',
'2' => 'full',
'3' => 'half',
},
hwEntityVolStatus => {
'1' => 'normal',
'2' => 'major',
'3' => 'fatal',
},
hwDisposeOperState => {
'1' => 'opSuccess',
'2' => 'opInProgress',
'3' => 'opDevNotSupportPredispose',
'4' => 'opCardNotSupportPredispose',
'5' => 'opAlreadyPredispose',
'6' => 'opCardConflict',
'7' => 'opDevOperationError',
},
hwEntityFanReg => {
'1' => 'yes',
'2' => 'no',
},
hwVirtualCableTestPairAStatus => {
'1' => 'normal',
'2' => 'abnormalOpen',
'3' => 'abnormalShort',
'4' => 'abnormalOpenShort',
'5' => 'abnormalCrossTalk',
'6' => 'unknown',
'7' => 'notSupport',
},
hwFileGeneResourceType => {
'1' => 'pnpcard',
'2' => 'pnpsubcard',
'3' => 'pnphardcapability',
'4' => 'pnpPreDisposeCapability',
'5' => 'pnpframe',
'6' => 'pnpdevtype',
'7' => 'pnpalarm',
},
hwEntityOpticalDirectionType => {
'1' => 'notSupported',
'2' => 'twoFiberBidirection',
'3' => 'oneFiberBidirection',
'4' => 'twoFiberTwoPortBidirection',
},
hwEntityPortType => {
'1' => 'notSupported',
'2' => 'copper',
'3' => 'fiber100',
'4' => 'fiber1000',
'5' => 'fiber10000',
'6' => 'opticalnotExist',
'7' => 'optical',
},
hwEntityTempStatus => {
'1' => 'normal',
'2' => 'minor',
'3' => 'major',
'4' => 'fatal',
},
hwEntityOpticalFiberType => {
'0' => 'unknown',
'1' => 'sc',
'2' => 'style1CopperConnector',
'3' => 'style2CopperConnector',
'4' => 'bncTnc',
'5' => 'coaxialHeaders',
'6' => 'fiberJack',
'7' => 'lc',
'8' => 'mtRj',
'9' => 'mu',
'10' => 'sg',
'11' => 'opticalPigtail',
'12' => 'mpo',
'20' => 'hssdcII',
'21' => 'copperPigtail',
},
hwEntityPwrState => {
'1' => 'supply',
'2' => 'notSupply',
'3' => 'sleep',
'4' => 'unknown',
},
hwEntityPwrPresent => {
'1' => 'present',
'2' => 'absent',
},
hwVirtualCableTestOperation => {
'1' => 'startTest',
'2' => 'resetTestValue',
'3' => 'readyStartTest',
},
hwEntityStartMode => {
'1' => 'notSupported',
'2' => 'cold',
'3' => 'warm',
'4' => 'unknown',
},
hwFileGeneOperState => {
'1' => 'opInProgress',
'2' => 'opSuccess',
'3' => 'opGetFileError',
'4' => 'opInvalidDestName',
'5' => 'opNoFlashSpace',
'6' => 'opWriteFileError',
'7' => 'opDestoryError',
},
hwEntityPwrMode => {
'1' => 'unknown',
'2' => 'dc',
'3' => 'ac',
},
hwEntityOpticalPlug => {
'0' => 'notSupported',
'1' => 'true',
'2' => 'false',
},
hwEntityFanState => {
'1' => 'normal',
'2' => 'abnormal',
},
hwEntityBoardClass => {
'1' => 'notSupported',
'2' => 'mpu',
'3' => 'lpu',
'4' => 'sfu',
'5' => 'icu',
'6' => 'ecu',
'7' => 'fan',
'8' => 'power',
'9' => 'lcd',
'10' => 'pmu',
'11' => 'cmu',
},
hwVirtualCableTestPairCStatus => {
'1' => 'normal',
'2' => 'abnormalOpen',
'3' => 'abnormalShort',
'4' => 'abnormalOpenShort',
'5' => 'abnormalCrossTalk',
'6' => 'unknown',
'7' => 'notSupport',
},
hwEntityPwrReg => {
'1' => 'yes',
'2' => 'no',
},
hwEntityFaultLight => {
'1' => 'notSupported',
'2' => 'normal',
'3' => 'underRepair',
},
hwEntityFanPresent => {
'1' => 'present',
'2' => 'absent',
},
hwEntityFanSpdAdjMode => {
'1' => 'auto',
'2' => 'manual',
'3' => 'unknown',
},
hwVirtualCableTestPairBStatus => {
'1' => 'normal',
'2' => 'abnormalOpen',
'3' => 'abnormalShort',
'4' => 'abnormalOpenShort',
'5' => 'abnormalCrossTalk',
'6' => 'unknown',
'7' => 'notSupport',
},
hwEntitySystemReset => {
'1' => 'normal',
'2' => 'restart',
},
hwEntityOpticalAuthenticationStatus => {
'0' => 'unknown',
'1' => 'authenticated',
'2' => 'unauthenticated',
},
hwEntityOpticalWaveBand => {
'0' => 'unknown',
'1' => 'clBand',
'2' => 'cBand',
'3' => 'lBand',
'4' => 'c32Band',
'5' => 'ramancBand',
'6' => 'ramanlBand',
'7' => 'cwdmBand',
'8' => 'smcBand',
'9' => 'c96bBand',
'10' => 'c192bBand',
},
hwEntityOpticalMode => {
'1' => 'notSupported',
'2' => 'singleMode',
'3' => 'multiMode5',
'4' => 'multiMode6',
'5' => 'noValue',
},
hwVirtualCableTestPairStatus => {
'1' => 'normal',
'2' => 'abnormalOpen',
'3' => 'abnormalShort',
'4' => 'abnormalOpenShort',
'5' => 'abnormalCrossTalk',
'6' => 'unknown',
'7' => 'notSupport',
},
hwBatteryState => {
'1' => 'charge',
'2' => 'discharge',
'3' => 'full',
'4' => 'abnormal',
},
hwEntityServiceType => {
'1' => 'sslvpn',
'2' => 'firewall',
'3' => 'loadBalance',
'4' => 'ipsec',
'5' => 'netstream',
'6' => 'wlan',
},
hwEntityOpticalType => {
'0' => 'unknown',
'1' => 'sc',
'2' => 'gbic',
'3' => 'sfp',
'4' => 'esfp',
'5' => 'rj45',
'6' => 'xfp',
'7' => 'xenpak',
'8' => 'transponder',
'9' => 'cfp',
'10' => 'smb',
'11' => 'sfpplus',
'12' => 'cxp',
'13' => 'qsfp',
'14' => 'qsfpplus',
'15' => 'cfp2',
'16' => 'dwdmsfp',
},
hwVirtualCableTestPairDStatus => {
'1' => 'normal',
'2' => 'abnormalOpen',
'3' => 'abnormalShort',
'4' => 'abnormalOpenShort',
'5' => 'abnormalCrossTalk',
'6' => 'unknown',
'7' => 'notSupport',
},
hwEntityHeartbeatOnOff => {
'1' => 'on',
'2' => 'off',
},
hwEntityOpticalTunableType => {
'1' => 'notSupported',
'2' => 'notTunable',
'3' => 'tunable',
'4' => 'supportTunableType',
},
};
1;
__END__

View file

@ -1,22 +0,0 @@
package Classes::AVOS;
our @ISA = qw(Classes::Bluecoat);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::AVOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::AVOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::licenses::/) {
$self->analyze_and_check_key_subsystem("Classes::AVOS::Component::KeySubsystem");
} elsif ($self->mode =~ /device::connections/) {
$self->analyze_and_check_connection_subsystem("Classes::AVOS::Component::ConnectionSubsystem");
} elsif ($self->mode =~ /device::security/) {
$self->analyze_and_check_security_subsystem("Classes::AVOS::Component::SecuritySubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,15 +0,0 @@
package Classes::Alcatel;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->{productname} =~ /AOS.*OAW/i) {
bless $self, 'Classes::Alcatel::OmniAccess';
$self->debug('using Classes::Alcatel::OmniAccess');
}
if (ref($self) ne "Classes::Alcatel") {
$self->init();
}
}

View file

@ -1,20 +0,0 @@
package Classes::AlliedTelesyn;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
$self->no_such_mode();
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::AlliedTelesyn::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::AlliedTelesyn::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::AlliedTelesyn::Component::MemSubsystem");
} elsif ($self->mode =~ /device::hsrp/) {
$self->analyze_and_check_hsrp_subsystem("Classes::HSRP::Component::HSRPSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,43 +0,0 @@
package Classes::Arista;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->mult_snmp_max_msg_size(10);
$self->analyze_and_check_environmental_subsystem("Classes::Arista::Component::EnvironmentalSubsystem");
$self->analyze_and_check_disk_subsystem("Classes::Arista::Component::DiskSubsystem");
if (! $self->check_messages()) {
$self->clear_messages(0);
$self->add_ok("environmental hardware working fine");
} else {
$self->clear_messages(0);
}
} elsif ($self->mode =~ /device::hardware::load/) {
# CPU util on management plane
# Utilization of CPUs on dataplane that are used for system functions
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::Arista::Component::HaSubsystem");
} elsif ($self->mode =~ /device::bgp/) {
if ($self->implements_mib('ARISTA-BGP4V2-MIB')) {
$self->analyze_and_check_interface_subsystem("Classes::Arista::ARISTABGP4V2MIB::Component::PeerSubsystem");
} else {
$self->establish_snmp_secondary_session();
if ($self->implements_mib('ARISTA-BGP4V2-MIB')) {
$self->analyze_and_check_interface_subsystem("Classes::Arista::ARISTABGP4V2MIB::Component::PeerSubsystem");
} else {
# na laeggst me aa am ooosch
$self->establish_snmp_session();
$self->debug("no ARISTA-BGP4V2-MIB, fallback");
$self->no_such_mode();
}
}
} else {
$self->no_such_mode();
}
}

View file

@ -1,12 +0,0 @@
package Classes::Arista::Component::DiskSubsystem;
our @ISA = qw(Classes::HOSTRESOURCESMIB::Component::DiskSubsystem);
use strict;
sub init {
my ($self) = @_;
$self->get_snmp_tables('HOST-RESOURCES-MIB', [
['storages', 'hrStorageTable', 'Classes::HOSTRESOURCESMIB::Component::DiskSubsystem::Storage', sub { my $o = shift; return ($o->{hrStorageDescr} =~ /^(Log|Core)$/ or $o->{hrStorageType} eq 'hrStorageFixedDisk') } ],
]);
}

View file

@ -1,4 +0,0 @@
package Classes::BGP;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,4 +0,0 @@
package Classes::Bintec;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,16 +0,0 @@
package Classes::Bintec::Bibo;
our @ISA = qw(Classes::Bintec);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Bintec::Bibo::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Bintec::Bibo::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Bintec::Bibo::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,18 +0,0 @@
package Classes::Bluecat;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->{productname} =~ /Bluecat Address Manager/) {
$self->rebless('Classes::Bluecat::AddressManager');
} elsif ($self->{productname} =~ /Bluecat DNS\/DHCP Server/) {
$self->rebless('Classes::Bluecat::DnsDhcpServer');
}
if (ref($self) ne "Classes::Bluecat") {
$self->init();
} else {
$self->no_such_mode();
}
}

View file

@ -1,30 +0,0 @@
package Classes::Bluecat::AddressManager;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
$self->analyze_and_check_jvm_subsystem("Classes::Bluecat::AddressManager::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::Bluecat::AddressManager::Component::HaSubsystem");
} elsif ($self->mode =~ /device::mngmt::/) {
$self->analyze_and_check_mgmt_subsystem("Classes::Bluecat::AddressManager::Component::MgmtSubsystem");
} else {
$self->no_such_mode();
}
}
sub pretty_sysdesc {
my ($self, $sysDescr) = @_;
my $sw_version = $self->get_snmp_object('BAM-SNMP-MIB', 'version');
my $start_time = $self->get_snmp_object('BAM-SNMP-MIB', 'startTime');
return sprintf "%s, sw version %s, start time %s",
$sysDescr, $sw_version, scalar localtime $start_time;
}

View file

@ -1,132 +0,0 @@
package Classes::Bluecat::AddressManager::Component::HaSubsystem;
our @ISA = qw(Monitoring::GLPlugin::SNMP::Item);
use strict;
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
sub init {
my ($self) = @_;
if ($self->mode =~ /device::ha::status/) {
$self->get_snmp_tables('BAM-SNMP-MIB', [
["replications", "replicationStatusTable", 'Classes::Bluecat::AddressManager::Component::HaSubsystem::Replication'],
]);
$self->get_snmp_objects('BAM-SNMP-MIB', (qw(
queueSize replication
replicationNodeStatus replicationAverageLatency
replicationWarningThreshold replicationBreakThreshold
replicationLatencyWarningThreshold replicationLatencyCriticalThreshold
)));
} elsif ($self->mode =~ /device::ha::role/) {
if (! $self->opts->role()) {
$self->opts->override_opt('role', 'primary');
}
$self->get_snmp_objects('BAM-SNMP-MIB', (qw(replicationNodeStatus)));
}
}
sub check {
my ($self) = @_;
if ($self->mode =~ /device::ha::status/) {
foreach (@{$self->{replications}}) {
$_->{replicationLatencyCriticalThreshold} = $self->{replicationLatencyCriticalThreshold};
$_->{replicationLatencyWarningThreshold} = $self->{replicationLatencyWarningThreshold};
$_->check();
}
} elsif ($self->mode =~ /device::ha::role/) {
$self->add_info(sprintf 'ha node status is %s',
$self->{replicationNodeStatus},
);
if ($self->{replicationNodeStatus} eq 'unknown') {
$self->add_message(
defined $self->opts->mitigation() ? $self->opts->mitigation() : WARNING,
'ha was not started');
} else {
if ($self->{replicationNodeStatus} ne $self->opts->role()) {
$self->add_message(
defined $self->opts->mitigation() ? $self->opts->mitigation() : WARNING,
$self->{info});
$self->add_message(
defined $self->opts->mitigation() ? $self->opts->mitigation() : WARNING,
sprintf "expected role %s", $self->opts->role())
} else {
$self->add_ok();
}
}
}
}
package Classes::Bluecat::AddressManager::Component::HaSubsystem::Replication;
our @ISA = qw(Monitoring::GLPlugin::SNMP::TableItem);
use strict;
sub check {
my ($self) = @_;
$self->add_info(sprintf '%s node %s has status %s, latency is %.2f',
lc $self->{replicationRole}, $self->{hostname},
lc $self->{replicationHealth}, $self->{currentLatency});
$self->set_thresholds(metric => 'latency_'.lc $self->{replicationRole},
warning => $self->{replicationLatencyWarningThreshold},
critical => $self->{replicationLatencyCriticalThreshold},
);
$self->add_message($self->check_thresholds(
metric => 'latency_'.lc $self->{replicationRole},
value => $self->{currentLatency}));
$self->add_perfdata(
label => 'latency_'.lc $self->{replicationRole},
value => $self->{currentLatency}
);
}
__END__
sdeb-bam-p03.sys.schwarz
root@sdeb-bam-p03:~# snmpwalk -v2c -c "communitypw" 10.201.135.240 .1.3.6.1.4.1.13315.100.210.1.8.2
BAM-SNMP-MIB::replicationNodeStatus.0 = INTEGER: primary(1)
-> hier soll nur das Ergebnis angezeigt werden
root@sdeb-bam-p03:~# snmpwalk -v2c -c "communitypw" 10.201.135.240 .1.3.6.1.4.1.13315.100.210.1.1.1
BAM-SNMP-MIB::version.0 = STRING: 9.0.0
-> hier soll nur das Ergebnis angezeigt werden
#root@sdeb-bam-p03:~# snmpwalk -v2c -c "communitypw" 10.201.135.240 .1.3.6.1.4.1.13315.100.210.1.1.2
#BAM-SNMP-MIB::startTime.0 = STRING: 2020-5-16,2:4:43.216
# uptime -> hier soll nur das Ergebnis angezeigt werden
root@sdeb-bam-p03:~# snmpwalk -v2c -c "communitypw" 10.201.135.240 .1.3.6.1.4.1.13315.100.210.1.8.8.1.4.10.201.135.240
BAM-SNMP-MIB::replicationHealth.10.201.135.240 = INTEGER: Replicating(2)
-> bei Ausgabe 0 und 1 soll Nagios alarm schlagen, 2 bedeutet alles iO
root@sdeb-bam-p03:~# snmpwalk -v2c -c "communitypw" 10.201.135.240 .1.3.6.1.4.1.13315.100.210.1.10.1.0
BAM-SNMP-MIB::lastSuccessfulBackupTime.0 = STRING: 2020-11-11,3:10:35.0
-> hier soll nur das Ergebnis angezeigt werden
KCZ_DDI
root@b0ac987f7n:~# snmpwalk -v2c -c "communitypw" 127.0.0.1 .1.3.6.1.4.1.13315.3.1.1.2.1.1
BCN-DHCPV4-MIB::bcnDhcpv4SerOperState.0 = INTEGER: running(1)
1Running ist alles iO, bei 2,3,4,5 soll Nagios alarm schlagen
root@b0ac987f7n:~# snmpwalk -v2c -c "communitypw" 127.0.0.1 .1.3.6.1.4.1.13315.3.1.2.2.1.1
BCN-DNS-MIB::bcnDnsSerOperState.0 = INTEGER: running(1)
1Running ist alles iO, bei 2,3,4,5 soll Nagios alarm schlagen
Hallo Gerhard,
für Bluecat devices brauchen wir einen ha-status in check_nwc_health.
Die MIBs hängen schon am Ticket dran.
Wichtige informationen wären:
- BAM-SNMP-MIB::replicationNodeStatus.0
- BAM-SNMP-MIB::startTime.0
- BAM-SNMP-MIB::replicationHealth.10.201.135.240
- BAM-SNMP-MIB::lastSuccessfulBackupTime.0
/omd/sites/mon/local/lib/monitoring-plugins/mon/mon_check_snmp -H 10.201.135.240 -P 2c -o .1.3.6.1.4.1.13315.100.210.1.10.1.0 backup
/omd/sites/mon/local/lib/monitoring-plugins/mon/mon_check_snmp -H 10.201.135.240 -P 2c -o .1.3.6.1.4.1.13315.100.210.1.8.8.1.4.10.201.135.240 -C "***" -w 2:2 -c 2:2 replication 240 replicationHealth
/omd/sites/mon/local/lib/monitoring-plugins/mon/mon_check_snmp -H 10.201.135.240 -P 2c -o .1.3.6.1.4.1.13315.100.210.1.8.2.0 -C "***" -w 1:1 -c 1:1 replicatiuon node replicationNodeStatus
/omd/sites/mon/local/lib/monitoring-plugins/mon/mon_check_snmp -H 10.201.135.240 -P 2c -o .1.3.6.1.4.1.13315.100.210.1.1.2.0 -C "***" -s OK
start time
/omd/sites/mon/local/lib/monitoring-plugins/mon/mon_check_snmp -H 10.201.135.240 -P 2c -o .1.3.6.1.4.1.13315.100.210.1.1.1.0 -C "***" -s OK
version

View file

@ -1,27 +0,0 @@
package Classes::Bluecat::DnsDhcpServer;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::Bluecat::DnsDhcpServer::Component::HaSubsystem");
} elsif ($self->mode =~ /device::process::/) {
$self->analyze_and_check_process_subsystem("Classes::Bluecat::DnsDhcpServer::Component::ProcessSubsystem");
} else {
$self->no_such_mode();
}
}
sub pretty_sysdesc {
my ($self, $sysDescr) = @_;
my $sw_version = $self->get_snmp_object('BCN-SYSTEM-MIB', 'bcnSysIdOSRelease');
return sprintf "%s, sw version %s", $sysDescr, $sw_version;
}

View file

@ -1,28 +0,0 @@
package Classes::CheckPoint::Firewall1;
our @ISA = qw(Classes::CheckPoint);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::CheckPoint::Firewall1::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::CheckPoint::Firewall1::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::CheckPoint::Firewall1::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::CheckPoint::Firewall1::Component::HaSubsystem");
} elsif ($self->mode =~ /device::fw::/) {
$self->analyze_and_check_fw_subsystem("Classes::CheckPoint::Firewall1::Component::FwSubsystem");
} elsif ($self->mode =~ /device::svn::/) {
$self->analyze_and_check_svn_subsystem("Classes::CheckPoint::Firewall1::Component::SvnSubsystem");
} elsif ($self->mode =~ /device::mngmt::/) {
# not sure if this works fa25239716cb74c672f8dd390430dc4056caffa7
$self->analyze_and_check_mngmt_subsystem("Classes::CheckPoint::Firewall1::Component::MngmtSubsystem");
} elsif ($self->mode =~ /device::vpn::status/) {
$self->analyze_and_check_config_subsystem("Classes::CheckPoint::Firewall1::Component::VpnSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,12 +0,0 @@
package Classes::CheckPoint::Gaia;
our @ISA = qw(Classes::CheckPoint::Firewall1);
use strict;
sub xinit {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::CheckPoint::Firewall1::Component::EnvironmentalSubsystem");
$self->no_such_mode();
}
}

View file

@ -1,26 +0,0 @@
package Classes::CheckPoint::VSX;
our @ISA = qw(Classes::CheckPoint);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::CheckPoint::Firewall1::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::CheckPoint::Firewall1::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::CheckPoint::Firewall1::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::CheckPoint::Firewall1::Component::HaSubsystem");
} elsif ($self->mode =~ /device::fw::/) {
$self->analyze_and_check_fw_subsystem("Classes::CheckPoint::VSX::Component::FwSubsystem");
} elsif ($self->mode =~ /device::svn::/) {
$self->analyze_and_check_svn_subsystem("Classes::CheckPoint::Firewall1::Component::SvnSubsystem");
} elsif ($self->mode =~ /device::mngmt::/) {
# not sure if this works fa25239716cb74c672f8dd390430dc4056caffa7
$self->analyze_and_check_mngmt_subsystem("Classes::CheckPoint::Firewall1::Component::MngmtSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,43 +0,0 @@
package Classes::Cisco::ASA;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::CISCOENTITYALARMMIB::Component::AlarmSubsystem");
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::CISCOENTITYSENSORMIB::Component::SensorSubsystem");
$self->analyze_and_check_environmental_subsystem("Classes::ENTITYSENSORMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Cisco::IOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Cisco::IOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::hsrp/) {
$self->analyze_and_check_hsrp_subsystem("Classes::HSRP::Component::HSRPSubsystem");
} elsif ($self->mode =~ /device::users/ || $self->mode =~ /device::connections/) {
# das war frueher "users". seit 6c70c2627e53cce991181369456c03f630f90f71
# ist count-connections kein alias von count-users mehr, sondern ein
# eigenstaendiger mode. fuehrte dazu, dass count-connections hier unten
# in no_such_mode reinlief. daher dieses users||connections.
# weil es sich bei asa tatsaechlich eher um connections als users handelt,
# waere es sauber, das users rauszuwerfen, allerdings wuerde das dann
# bei denen krachen, die count-users verwenden.
$self->analyze_and_check_connection_subsystem("Classes::Cisco::IOS::Component::ConnectionSubsystem");
} elsif ($self->mode =~ /device::config/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::ConfigSubsystem");
} elsif ($self->mode =~ /device::interfaces::nat::sessions::count/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::NatSubsystem");
} elsif ($self->mode =~ /device::interfaces::nat::rejects/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::NatSubsystem");
} elsif ($self->mode =~ /device::vpn::status/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::CISCOIPSECFLOWMONITOR::Component::VpnSubsystem");
} elsif ($self->mode =~ /device::vpn::sessions/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::CISCOREMOTEACCESSMONITORMIB::Component::VpnSubsystem");
} elsif ($self->mode =~ /device::ha::role/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::HaSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,19 +0,0 @@
package Classes::Cisco::AsyncOS;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::AsyncOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Cisco::AsyncOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Cisco::AsyncOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::licenses::/) {
$self->analyze_and_check_key_subsystem("Classes::Cisco::AsyncOS::Component::KeySubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,21 +0,0 @@
package Classes::Cisco::CCM;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} elsif ($self->mode =~ /device::phone::cm/) {
$self->analyze_and_check_cm_subsystem("Classes::Cisco::CCM::Component::CmSubsystem");
} elsif ($self->mode =~ /device::phone/) {
$self->analyze_and_check_phone_subsystem("Classes::Cisco::CCM::Component::PhoneSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,51 +0,0 @@
package Classes::Cisco::IOS;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::chassis::health/) {
if ($self->implements_mib('CISCO-STACK-MIB')) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::CISCOSTACKMIB::Component::StackSubsystem");
} elsif ($self->implements_mib('CISCO-STACKWISE-MIB')) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::CISCOSTACKWISEMIB::Component::StackSubsystem");
}
if (! $self->implements_mib('CISCO-STACKWISE-MIB') &&
! $self->implements_mib('CISCO-STACK-MIB')) {
if (defined $self->opts->mitigation()) {
$self->add_message($self->opts->mitigation(), 'this is not a stacked device');
} else {
$self->add_unknown('this is not a stacked device');
}
}
} elsif ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::IOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Cisco::IOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Cisco::IOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::hsrp/) {
$self->analyze_and_check_hsrp_subsystem("Classes::HSRP::Component::HSRPSubsystem");
} elsif ($self->mode =~ /device::users/) {
$self->analyze_and_check_connection_subsystem("Classes::Cisco::IOS::Component::ConnectionSubsystem");
} elsif ($self->mode =~ /device::config/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::ConfigSubsystem");
} elsif ($self->mode =~ /device::interfaces::nat::sessions::count/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::NatSubsystem");
} elsif ($self->mode =~ /device::interfaces::nat::rejects/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::NatSubsystem");
#} elsif ($self->mode =~ /device::bgp::prefix::count/) {
} elsif ($self->mode =~ /device::bgp/) {
$self->analyze_and_check_bgp_subsystem("Classes::BGP::Component::PeerSubsystem");
} elsif ($self->mode =~ /device::wlan/ && $self->implements_mib('AIRESPACE-WIRELESS-MIB')) {
$self->analyze_and_check_wlan_subsystem("Classes::Cisco::WLC::Component::WlanSubsystem");
} elsif ($self->mode =~ /device::vpn::status/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::CISCOIPSECFLOWMONITOR::Component::VpnSubsystem");
} elsif ($self->mode =~ /device::vpn::sessions/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::CISCOREMOTEACCESSMONITORMIB::Component::VpnSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,30 +0,0 @@
package Classes::Cisco::NXOS;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
#$self->mult_snmp_max_msg_size(10);
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::NXOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::cisco::fex::watch/) {
$self->analyze_and_check_environmental_subsystem("Classes::Cisco::NXOS::Component::FexSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Cisco::IOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Cisco::NXOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::config/) {
$self->analyze_and_check_config_subsystem("Classes::Cisco::IOS::Component::ConfigSubsystem");
} elsif ($self->mode =~ /device::hsrp/) {
$self->analyze_and_check_hsrp_subsystem("Classes::HSRP::Component::HSRPSubsystem");
} else {
$self->no_such_mode();
}
}
sub pretty_sysdesc {
my ($self, $sysDescr) = @_;
if ($sysDescr =~ /(Cisco NX-OS.*? n\d+),.*(Version .*), RELEASE SOFTWARE/) {
return $1.' '.$2;
}
}

View file

@ -1,18 +0,0 @@
package Classes::Cisco::PrimeNCS;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
#$self->analyze_and_check_environmental_subsystem("Classes::Cisco::CISCOENTITYFRUCONTROLMIB::Component::EnvironmentalSubsystem");
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,21 +0,0 @@
package Classes::Cisco::UCOS;
our @ISA = qw(Classes::Cisco);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} elsif ($self->mode =~ /device::phone::cm/) {
$self->analyze_and_check_cm_subsystem("Classes::Cisco::CCM::Component::CmSubsystem");
} elsif ($self->mode =~ /device::phone/) {
$self->analyze_and_check_phone_subsystem("Classes::Cisco::CCM::Component::PhoneSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,19 +0,0 @@
package Classes::Clavister;
our @ISA = qw(Classes::Device);
use strict;
use constant trees => (
'1.3.6.1.4.1.5089', # CLAVISTER-MIB
);
sub init {
my ($self) = @_;
if ($self->{productname} =~ /Clavister/i) {
bless $self, 'Classes::Clavister::Firewall1';
$self->debug('using Classes::Clavister::Firewall1');
}
if (ref($self) ne "Classes::Clavister") {
$self->init();
}
}

View file

@ -1,17 +0,0 @@
package Classes::Clavister::Firewall1;
our @ISA = qw(Classes::Clavister);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Clavister::Firewall1::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Clavister::Firewall1::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Clavister::Firewall1::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,17 +0,0 @@
package Classes::DrayTek::Vigor;
our @ISA = qw(Classes::DrayTek);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::DrayTek::Vigor::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::DrayTek::Vigor::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::DrayTek::Vigor::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,4 +0,0 @@
package Classes::ENTITYSENSORMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,19 +0,0 @@
package Classes::Eltex;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->{productname} =~ /(MES2324B)|(MES2324F)|(MES31)|(MES53)/i) {
bless $self, 'Classes::Eltex::Aggregation';
$self->debug('using Classes::Eltex::Aggregation');
} elsif ($self->{productname} =~ /(MES21)|(MES23)/i) {
bless $self, 'Classes::Eltex::Access';
$self->debug('using Classes::Eltex::Access');
}
if (ref($self) ne "Classes::Eltex") {
$self->init();
} else {
$self->no_such_mode();
}
}

View file

@ -1,54 +0,0 @@
package Classes::F5::F5BIGIP;
our @ISA = qw(Classes::F5);
use strict;
sub init {
my ($self) = @_;
# gets 11.* and 9.*
$self->{sysProductVersion} = $self->get_snmp_object('F5-BIGIP-SYSTEM-MIB', 'sysProductVersion');
$self->{sysPlatformInfoMarketingName} = $self->get_snmp_object('F5-BIGIP-SYSTEM-MIB', 'sysPlatformInfoMarketingName');
if (! defined $self->{sysProductVersion} ||
$self->{sysProductVersion} !~ /^((9)|(10)|(11)|(12)|(13)|(14)|(15)|(16))/) {
$self->{sysProductVersion} = "4";
}
if ($self->mode =~ /device::hardware::health/) {
if (! $self->get_snmp_object('F5-BIGIP-SYSTEM-MIB', 'sysChassisFanNumber') &&
! $self->get_snmp_object('F5-BIGIP-SYSTEM-MIB', 'sysChassisPowerSupplyNumber')) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
} else {
$self->analyze_and_check_environmental_subsystem("Classes::F5::F5BIGIP::Component::EnvironmentalSubsystem");
}
$self->analyze_and_check_environmental_subsystem("Classes::F5::F5BIGIP::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::F5::F5BIGIP::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::F5::F5BIGIP::Component::MemSubsystem");
} elsif ($self->mode =~ /device::lb/) {
if ($self->opts->role && $self->opts->role eq "gtm") {
$self->analyze_and_check_gtm_subsystem("Classes::F5::F5BIGIP::Component::GTMSubsystem");
} else {
$self->analyze_and_check_ltm_subsystem();
}
} elsif ($self->mode =~ /device::wideip/) {
$self->analyze_and_check_gtm_subsystem("Classes::F5::F5BIGIP::Component::GTMSubsystem");
} elsif ($self->mode =~ /device::users::count/) {
$self->analyze_and_check_connection_subsystem("Classes::F5::F5BIGIP::Component::ConnectionSubsystem");
} elsif ($self->mode =~ /device::connections::count/) {
$self->analyze_and_check_connection_subsystem("Classes::F5::F5BIGIP::Component::ConnectionSubsystem");
} elsif ($self->mode =~ /device::config/) {
$self->analyze_and_check_config_subsystem("Classes::F5::F5BIGIP::Component::ConfigSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_ha_subsystem("Classes::F5::F5BIGIP::Component::HaSubsystem");
} elsif ($self->mode =~ /device::vip/) {
$self->analyze_and_check_vip_subsystem("Classes::F5::F5BIGIP::Component::VipSubsystem");
} else {
$self->no_such_mode();
}
}
sub analyze_ltm_subsystem {
my ($self) = @_;
$self->{components}->{ltm_subsystem} =
Classes::F5::F5BIGIP::Component::LTMSubsystem->new('sysProductVersion' => $self->{sysProductVersion}, sysPlatformInfoMarketingName => $self->{sysPlatformInfoMarketingName});
}

View file

@ -1,4 +0,0 @@
package Classes::FCEOS;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,4 +0,0 @@
package Classes::FCMGMT;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,20 +0,0 @@
package Classes::FabOS;
our @ISA = qw(Classes::Brocade);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::FabOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::FabOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::FabOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::interfaces/) {
$self->analyze_and_check_interface_subsystem("Classes::FabOS::Component::InterfaceSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,21 +0,0 @@
package Classes::Fortigate;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Fortigate::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Fortigate::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Fortigate::Component::MemSubsystem");
} elsif ($self->mode =~ /device::ha::/) {
$self->analyze_and_check_mem_subsystem("Classes::Fortigate::Component::HaSubsystem");
} elsif ($self->mode =~ /device::vpn::sessions/) {
$self->analyze_and_check_config_subsystem("Classes::Fortigate::Component::VpnSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,19 +0,0 @@
package Classes::Foundry;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Foundry::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Foundry::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Foundry::Component::MemSubsystem");
} elsif ($self->mode =~ /device::lb/) {
$self->analyze_and_check_slb_subsystem("Classes::Foundry::Component::SLBSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,17 +0,0 @@
# HP Huawei 3Com
package Classes::HH3C;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HH3C::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HH3C::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HH3C::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,21 +0,0 @@
package Classes::HOSTRESOURCESMIB;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
$self->analyze_and_check_environmental_subsystem("Classes::LMSENSORSMIB::Component::EnvironmentalSubsystem");
if (! $self->check_messages()) {
$self->reduce_messages("hardware working fine");
}
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,30 +0,0 @@
package Classes::HP::Aruba;
our @ISA = qw(Classes::HP);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::HP::Aruba::Component::EnvironmentalSubsystem");
if ($self->implements_mib("iiENTITY-SENSOR-MIB")) {
$self->analyze_and_check_environmental_subsystem("Classes::ENTITYSENSORMIB::Component::EnvironmentalSubsystem");
}
$self->analyze_and_check_disk_subsystem("Classes::HOSTRESOURCESMIB::Component::DiskSubsystem");
$self->reduce_messages_short('environmental hardware working fine');
} elsif ($self->mode =~ /device::hardware::load/) {
if ($self->implements_mib("ARUBAWIRED-VSF-MIB")) {
$self->analyze_and_check_cpu_subsystem("Classes::HP::Aruba::Component::CpuSubsystem");
} else {
$self->analyze_and_check_cpu_subsystem("Classes::HOSTRESOURCESMIB::Component::CpuSubsystem");
}
} elsif ($self->mode =~ /device::hardware::memory/) {
if ($self->implements_mib("ARUBAWIRED-VSF-MIB")) {
$self->analyze_and_check_cpu_subsystem("Classes::HP::Aruba::Component::CpuSubsystem");
} else {
$self->analyze_and_check_mem_subsystem("Classes::HOSTRESOURCESMIB::Component::MemSubsystem");
}
} else {
$self->no_such_mode();
}
}

View file

@ -1,17 +0,0 @@
package Classes::HP::Procurve::Component::EnvironmentalSubsystem;
our @ISA = qw(Monitoring::GLPlugin::SNMP::Item);
use strict;
sub init {
my ($self) = @_;
if ($self->implements_mib('HP-ICF-CHASSIS')) {
$self->analyze_and_check_sensor_subsystem('Classes::HP::Procurve::Component::SensorSubsystem');
} else {
$self->analyze_and_check_environmental_subsystem("Classes::ENTITYSENSORMIB::Component::EnvironmentalSubsystem");
}
if (! $self->check_messages()) {
$self->add_ok("environmental hardware working fine");
}
}

View file

@ -1,4 +0,0 @@
package Classes::HSRP;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,40 +0,0 @@
package Classes::Huawei;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
my $sysobj = $self->get_snmp_object('MIB-2-MIB', 'sysObjectID', 0);
if ($sysobj =~ /^\.*1\.3\.6\.1\.4\.1\.2011\.2\.239/) {
bless $self, 'Classes::Huawei::CloudEngine';
$self->debug('using Classes::Huawei::CloudEngine');
}
if (ref($self) ne "Classes::Huawei") {
$self->init();
} else {
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Huawei::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Huawei::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Huawei::Component::MemSubsystem");
} elsif ($self->mode =~ /device::bgp/) {
if ($self->implements_mib('HUAWEI-BGP-VPN-MIB', 'hwBgpPeerAddrFamilyTable')) {
$self->analyze_and_check_interface_subsystem("Classes::Huawei::Component::PeerSubsystem");
} else {
$self->establish_snmp_secondary_session();
if ($self->implements_mib('HUAWEI-BGP-VPN-MIB', 'hwBgpPeerAddrFamilyTable')) {
$self->analyze_and_check_interface_subsystem("Classes::Huawei::Component::PeerSubsystem");
} else {
$self->establish_snmp_session();
$self->debug("no HUAWEI-BGP-VPN-MIB and/or no hwBgpPeerAddrFamilyTable, fallback");
$self->no_such_mode();
}
}
} else {
$self->no_such_mode();
}
}
}

View file

@ -1,159 +0,0 @@
package Classes::Huawei::Component::EnvironmentalSubsystem;
our @ISA = qw(Monitoring::GLPlugin::SNMP::Item);
use strict;
sub init {
my ($self) = @_;
$self->get_snmp_tables('ENTITY-MIB', [
['modules', 'entPhysicalTable',
'Classes::Huawei::Component::EnvironmentalSubsystem::Module',
sub { my ($o) = @_; $o->{entPhysicalClass} eq 'module' },
['entPhysicalClass', 'entPhysicalDescr', 'entPhysicalName']],
['fans', 'entPhysicalTable',
'Classes::Huawei::Component::EnvironmentalSubsystem::Fan',
sub { my ($o) = @_; $o->{entPhysicalClass} eq 'fan' },
['entPhysicalClass', 'entPhysicalDescr', 'entPhysicalName']],
['powersupplies', 'entPhysicalTable',
'Classes::Huawei::Component::EnvironmentalSubsystem::Powersupply',
sub { my ($o) = @_; $o->{entPhysicalClass} eq 'powerSupply' },
['entPhysicalClass', 'entPhysicalDescr', 'entPhysicalName']],
]);
$self->get_snmp_tables('HUAWEI-ENTITY-EXTENT-MIB', [
['fanstates', 'hwFanStatusTable', 'Monitoring::GLPlugin::SNMP::TableItem'],
]);
foreach (qw(modules fans powersupplies)) {
$self->get_snmp_tables('HUAWEI-ENTITY-EXTENT-MIB', [
['entitystates', 'hwEntityStateTable',
'Monitoring::GLPlugin::SNMP::TableItem'],
]);
$self->merge_tables($_, "entitystates");
}
if (@{$self->{fanstates}} && ! @{$self->{fans}}) {
# gibts auch, d.h. retten, was zu retten ist
foreach (@{$self->{fanstates}}) {
bless $_, "Classes::Huawei::Component::EnvironmentalSubsystem::Fan";
$_->{entPhysicalName} = $_->{flat_indices};
$_->finish();
}
} else {
$self->merge_tables_with_code("fans", "fanstates", sub {
my ($fan, $fanstate) = @_;
return ($fan->{entPhysicalName} eq sprintf("FAN %d/%d",
$fanstate->{hwEntityFanSlot}, $fanstate->{hwEntityFanSn})) ? 1 : 0;
});
}
}
package Classes::Huawei::Component::EnvironmentalSubsystem::Fan;
our @ISA = qw(Monitoring::GLPlugin::SNMP::TableItem);
use strict;
sub finish {
my ($self) = @_;
# kommt auch vor, dass die nicht existieren. Im Zweifelsfall "up"
$self->{hwEntityAdminStatus} ||= "up";
$self->{hwEntityOperStatus} ||= "up";
}
sub check {
my ($self) = @_;
$self->add_info(sprintf 'fan %s is %s, state is %s, admin status is %s, oper status is %s',
$self->{entPhysicalName}, $self->{hwEntityFanPresent},
$self->{hwEntityFanState},
$self->{hwEntityAdminStatus}, $self->{hwEntityOperStatus});
if ($self->{hwEntityFanPresent} eq 'present') {
if ($self->{hwEntityFanState} ne 'normal') {
$self->add_warning();
}
$self->add_perfdata(
label => 'rpm_'.$self->{entPhysicalName},
value => $self->{hwEntityFanSpeed},
uom => '%',
);
}
}
package Classes::Huawei::Component::EnvironmentalSubsystem::Powersupply;
our @ISA = qw(Monitoring::GLPlugin::SNMP::TableItem);
use strict;
sub check {
my ($self) = @_;
$self->add_info(sprintf 'powersupply %s has admin status is %s, oper status is %s',
$self->{entPhysicalName},
$self->{hwEntityAdminStatus}, $self->{hwEntityOperStatus});
if ($self->{hwEntityOperStatus} eq 'down' ||
$self->{hwEntityOperStatus} eq 'offline') {
$self->add_warning();
}
}
package Classes::Huawei::Component::EnvironmentalSubsystem::Module;
our @ISA = qw(Monitoring::GLPlugin::SNMP::TableItem);
use strict;
sub finish {
my ($self) = @_;
$self->{name} = $self->{entPhysicalName};
}
sub check {
my ($self) = @_;
$self->add_info(sprintf 'module %s admin status is %s, oper status is %s',
$self->{name}, $self->{hwEntityAdminStatus}, $self->{hwEntityOperStatus});
$self->add_info(sprintf 'module %s temperature is %.2f',
$self->{name}, $self->{hwEntityTemperature});
$self->set_thresholds(
metric => 'temp_'.$self->{name},
warning => $self->{hwEntityTemperatureLowThreshold}.':'.$self->{hwEntityTemperatureThreshold},
critical => $self->{hwEntityTemperatureLowThreshold}.':'.$self->{hwEntityTemperatureThreshold},
);
$self->add_message(
$self->check_thresholds(
metric => 'temp_'.$self->{name},
value => $self->{hwEntityTemperature}
));
$self->add_perfdata(
label => 'temp_'.$self->{name},
value => $self->{hwEntityTemperature},
);
$self->add_info(sprintf 'module %s fault light is %s',
$self->{name}, $self->{hwEntityFaultLight});
}
__END__
entPhysicalAlias:
entPhysicalAssetID:
entPhysicalClass: module
entPhysicalContainedIn: 16842752
entPhysicalDescr: Assembling Components-CE5800-CE5850-48T4S2Q-EI-CE5850-48T4S2Q-
EI Switch(48-Port GE RJ45,4-Port 10GE SFP+,2-Port 40GE QSFP+,Without Fan and Pow
er Module)
entPhysicalFirmwareRev: 266
entPhysicalHardwareRev: DE51SRU1B VER D
entPhysicalIsFRU: 1
entPhysicalMfgName: Huawei
entPhysicalModelName:
entPhysicalName: CE5850-48T4S2Q-EI 1
entPhysicalParentRelPos: 1
entPhysicalSerialNum: 210235527210E2000218
entPhysicalSoftwareRev: Version 8.80 V100R003C00SPC600
entPhysicalVendorType: .1.3.6.1.4.1.2011.20021210.12.688138
hwEntityAdminStatus: unlocked
hwEntityEnvironmentalUsage: 14
hwEntityEnvironmentalUsageThreshold: 95
hwEntityFaultLight: normal
hwEntityMemSizeMega: 1837
hwEntityMemUsage: 43
hwEntityMemUsageThreshold: 95
hwEntityOperStatus: enabled
hwEntityPortType: notSupported
hwEntitySplitAttribute:
hwEntityStandbyStatus: providingService
hwEntityTemperature: 33
hwEntityTemperatureLowThreshold: 0
hwEntityTemperatureThreshold: 62
hwEntityUpTime: 34295804

View file

@ -1,4 +0,0 @@
package Classes::IPFORWARDMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,4 +0,0 @@
package Classes::IPMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,27 +0,0 @@
package Classes::Juniper;
our @ISA = qw(Classes::Device);
use strict;
use constant trees => (
'1.3.6.1.4.1.4874.',
'1.3.6.1.4.1.3224.',
);
sub init {
my ($self) = @_;
if ($self->{productname} =~ /NetScreen/i) {
bless $self, 'Classes::Juniper::NetScreen';
$self->debug('using Classes::Juniper::NetScreen');
} elsif ($self->{productname} =~ /JunOS/i) {
bless $self, 'Classes::Juniper::JunOS';
$self->debug('using Classes::Juniper::JunOS');
} elsif ($self->{productname} =~ /Juniper.*MAG\-\d+/i) {
# Juniper Networks,Inc,MAG-4610,7.2R10
bless $self, 'Classes::Juniper::IVE';
$self->debug('using Classes::Juniper::IVE');
}
if (ref($self) ne "Classes::Juniper") {
$self->init();
}
}

View file

@ -1,24 +0,0 @@
package Classes::Juniper::IVE;
our @ISA = qw(Classes::Juniper);
use strict;
use constant trees => (
'1.3.6.1.2.1', # mib-2
'1.3.6.1.2.1.105',
);
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Juniper::IVE::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Juniper::IVE::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Juniper::IVE::Component::MemSubsystem");
} elsif ($self->mode =~ /device::users/) {
$self->analyze_and_check_user_subsystem("Classes::Juniper::IVE::Component::UserSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,24 +0,0 @@
package Classes::Juniper::NetScreen;
our @ISA = qw(Classes::Juniper);
use strict;
use constant trees => (
'1.3.6.1.2.1', # mib-2
'1.3.6.1.2.1.105',
);
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Juniper::NetScreen::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Juniper::NetScreen::Component::MemSubsystem");
} elsif ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Juniper::NetScreen::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::ha::status/) {
$self->analyze_and_check_environmental_subsystem("Classes::Juniper::NetScreen::Component::VsdSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,4 +0,0 @@
package Classes::LMSENSORSMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,18 +0,0 @@
package Classes::Lancom;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
$self->bulk_is_baeh();
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Lancom::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Lancom::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Lancom::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,3 +0,0 @@
package Classes::Lantronix;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,17 +0,0 @@
package Classes::Nortel::S5;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Nortel::S5::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Nortel::S5::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Nortel::S5::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,17 +0,0 @@
package Classes::OneOS;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::OneOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::OneOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::OneOS::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,21 +0,0 @@
package Classes::PulseSecure::Gateway;
our @ISA = qw(Classes::Juniper);
use strict;
sub init {
my ($self) = @_;
# irgendwo ausgegraben, nicht offiziell dokumentiert
$Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{'PULSESECURE-PSG-MIB'}->{'maxLicensedUsers'} = '1.3.6.1.4.1.12532.55';
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::PulseSecure::Gateway::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::PulseSecure::Gateway::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::PulseSecure::Gateway::Component::MemSubsystem");
} elsif ($self->mode =~ /device::users/) {
$self->analyze_and_check_user_subsystem("Classes::PulseSecure::Gateway::Component::UserSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,4 +0,0 @@
package Classes::RAPIDCITYMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,20 +0,0 @@
package Classes::Riverbed;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->implements_mib('STEELHEAD-MIB')) {
bless $self, 'Classes::Riverbed::Steelhead';
$self->debug('using Classes::Riverbed::Steelhead');
} elsif ($self->implements_mib('STEELHEAD-EX-MIB')) {
bless $self, 'Classes::Riverbed::SteelheadEX';
$self->debug('using Classes::Riverbed::SteelheadEX');
}
if (ref($self) ne "Classes::Riverbed") {
$self->init();
} else {
$self->no_such_mode();
}
}

View file

@ -1,38 +0,0 @@
package Classes::Riverbed::Steelhead;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Riverbed::Steelhead::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Server::Linux::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::disk::usage/) {
$self->analyze_and_check_disk_subsystem("Classes::UCDMIB::Component::DiskSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Server::Linux::Component::MemSubsystem");
} elsif ($self->mode =~ /device::process::status/) {
$self->analyze_and_check_process_subsystem("Classes::UCDMIB::Component::ProcessSubsystem");
} elsif ($self->mode =~ /device::uptime/) {
$self->analyze_and_check_uptime_subsystem("Classes::HOSTRESOURCESMIB::Component::UptimeSubsystem");
} else {
$self->no_such_mode();
}
}
package Classes::Riverbed::SteelheadEX;
our @ISA = qw(Classes::Riverbed::Steelhead);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Riverbed::SteelheadEX::Component::EnvironmentalSubsystem");
} else {
$self->SUPER::init();
}
}

View file

@ -1,21 +0,0 @@
package Classes::SGOS;
our @ISA = qw(Classes::Bluecoat);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::SGOS::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::SGOS::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::SGOS::Component::MemSubsystem");
} elsif ($self->mode =~ /device::security/) {
$self->analyze_and_check_security_subsystem("Classes::SGOS::Component::SecuritySubsystem");
} elsif ($self->mode =~ /device::(users|connections)::(count|check)/) {
$self->analyze_and_check_connection_subsystem("Classes::SGOS::Component::ConnectionSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,23 +0,0 @@
package Classes::SecureOS;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
# not sure if this works fa25239716cb74c672f8dd390430dc4056caffa7
if ($self->implements_mib('FCMGMT-MIB')) {
$self->analyze_and_check_environmental_subsystem("Classes::FCMGMT::Component::EnvironmentalSubsystem");
}
if ($self->implements_mib('HOST-RESOURCES-MIB')) {
$self->analyze_and_check_environmental_subsystem("Classes::HOSTRESOURCESMIB::Component::EnvironmentalSubsystem");
}
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::UCDMIB::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::UCDMIB::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,23 +0,0 @@
package Classes::Server::Linux;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Server::Linux::Component::EnvironmentalSubsystem")
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Server::Linux::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::disk::usage/) {
$self->analyze_and_check_disk_subsystem("Classes::UCDMIB::Component::DiskSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Server::Linux::Component::MemSubsystem");
} elsif ($self->mode =~ /device::process::status/) {
$self->analyze_and_check_process_subsystem("Classes::UCDMIB::Component::ProcessSubsystem");
} elsif ($self->mode =~ /device::uptime/ && $self->implements_mib("HOST-RESOURCES-MIB")) {
$self->analyze_and_check_uptime_subsystem("Classes::HOSTRESOURCESMIB::Component::UptimeSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,24 +0,0 @@
package Classes::UCDMIB;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::UCDMIB::Component::DiskSubsystem");
$self->analyze_and_check_environmental_subsystem("Classes::LMSENSORSMIB::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::UCDMIB::Component::CpuSubsystem");
$self->analyze_and_check_load_subsystem("Classes::UCDMIB::Component::LoadSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::UCDMIB::Component::MemSubsystem");
$self->analyze_and_check_swap_subsystem("Classes::UCDMIB::Component::SwapSubsystem");
} elsif ($self->mode =~ /device::process::status/) {
$self->analyze_and_check_process_subsystem("Classes::UCDMIB::Component::ProcessSubsystem");
} elsif ($self->mode =~ /device::uptime/ && $self->implements_mib("HOST-RESOURCES-MIB")) {
$self->analyze_and_check_uptime_subsystem("Classes::HOSTRESOURCESMIB::Component::UptimeSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,4 +0,0 @@
package Classes::UPNP;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,16 +0,0 @@
package Classes::UPNP::AVM;
our @ISA = qw(Classes::UPNP);
use strict;
sub init {
my ($self) = @_;
if ($self->{productname} =~ /(7390|7490|7580|7590|6490|7412)/) {
$self->rebless('Classes::UPNP::AVM::FritzBox7390');
} else {
$self->no_such_model();
}
if (ref($self) ne "Classes::UPNP::AVM") {
$self->init();
}
}

View file

@ -1,3 +0,0 @@
package Classes::VRRPMIB;
our @ISA = qw(Classes::Device);
use strict;

View file

@ -1,18 +0,0 @@
package Classes::Vormetric;
our @ISA = qw(Classes::Device);
use strict;
sub init {
my ($self) = @_;
if ($self->mode =~ /device::hardware::health/) {
$self->analyze_and_check_environmental_subsystem("Classes::Vormetric::Component::EnvironmentalSubsystem");
} elsif ($self->mode =~ /device::hardware::load/) {
$self->analyze_and_check_cpu_subsystem("Classes::Vormetric::Component::CpuSubsystem");
} elsif ($self->mode =~ /device::hardware::memory/) {
$self->analyze_and_check_mem_subsystem("Classes::Vormetric::Component::MemSubsystem");
} else {
$self->no_such_mode();
}
}

View file

@ -1,548 +0,0 @@
libexec_SCRIPTS=check_nwc_health
GL_MODULES=\
../GLPlugin/lib/Monitoring/GLPlugin/Commandline/Extraopts.pm \
../GLPlugin/lib/Monitoring/GLPlugin/Commandline/Getopt.pm \
../GLPlugin/lib/Monitoring/GLPlugin/Commandline.pm \
../GLPlugin/lib/Monitoring/GLPlugin.pm \
../GLPlugin/lib/Monitoring/GLPlugin/Item.pm \
../GLPlugin/lib/Monitoring/GLPlugin/TableItem.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/MIB2MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SNMPFRAMEWORKMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ADSLLINEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ADONISDNSMIBMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/AIRESPACESWITCHINGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/AIRESPACEWIRELESSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ALARMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ALCATELIND1BASEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARISTABGP4V2MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARISTAENTITYSENSORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBATCMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDCHASSISMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDFANTRAYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDFANMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDPOWERSUPPLYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDVSFMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ARUBAWIREDTEMPSENSORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ASYNCOSMAILMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ATTACKMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BAMSNMPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BCNDHCPV4MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BCNDNSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BCNSYSTEMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BGP4MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BIANCABRICKMIBRESMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BLUECOATAVMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/BLUECOATSGPROXYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CHECKPOINTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOBGP4MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOCCMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOCONFIGMANMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOEIGRPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOENHANCEDMEMPOOLMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOENTITYALARMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOENTITYFRUCONTROLMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOENTITYSENSORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOENVMONMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOETHERNETFABRICEXTENDERMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOFEATURECONTROLMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOFIREWALLMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOHSRPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOIETFNATMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOIPSECFLOWMONITORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOL2L3INTERFACECONFIGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOLICENSEMGMTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOLWAPPAPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOLWAPPHAMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOMEMORYPOOLMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOPORTCHANNELMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOPORTSECURITYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOPROCESSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOREMOTEACCESSMONITORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCORTTMONMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCORTTMONTCMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSBHWENVIROMENTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSBRNDMNGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSBSYSMNGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSBTUNINGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSMARTLICMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSTACKMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSTACKWISEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOSYSTEMEXTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CISCOVTPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/CLAVISTERMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/DCBGPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/DEVICEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/DISKMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ELTEXMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ENTITYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ENTITYSENSORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ENTITYSTATEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ETHERLIKEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/F5BIGIPAPMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/F5BIGIPGLOBALMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/F5BIGIPLOCALMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/F5BIGIPSYSTEMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FCEOSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FCMGMTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FIBRECHANNELFEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FORTINETCOREMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FORTINETFORTIGATEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FOUNDRYSNAGENTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/FOUNDRYSNSWL4SWITCHGROUPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/GENUAMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HH3CENTITYEXTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIBGPVPNMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HUAWEIENTITYEXTENTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HOSTRESOURCESMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/HPICFCHASSIS.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IANAIFTYPEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IANARTPROTOMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IEEE8023LAGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IFMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/INETADDRESSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IPFORWARDMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/IPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNIPERALARMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNIPERMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNIPERIVEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNIPERRPSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNIPERSRX5000SPUMONITORINGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/JUNOSBGP4V2MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/LARAMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/LCOSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/LMSENSORSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/LOADBALSYSTEMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/MINIIFMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETGEARMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETSCREENCHASSISMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETSCREENNSRPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETSCREENPRODUCTSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETSCREENRESOURCEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/NETSWITCHMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OLDCISCOCPUMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OLDCISCOINTERFACESMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OLDNETSWITCHMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OLDSTATISTICSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ONEACCESSSYSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OPENBSDCARPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OPENBSDMEMMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OPENBSDPFMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OPENBSDSENSORSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/ORGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OSPFMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/OSPFV3MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/PANCOMMONMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/PANPRODUCTSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/PHIONMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/PROXYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/PULSESECUREPSGMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/RAPIDCITYMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/RESOURCEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/RMONMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/S5CHASSISMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SENSORMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SNMPV2TCV1MIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/STATISTICSMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/STEELHEADMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/STEELHEADEXMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/STORAGEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SWMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SYNOPTICSROOTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/SYSTEMRESOURCESMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/UCDDISKIOMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/UCDSNMPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/USAGEMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/VORMETRICMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/VRRPMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/WLSXSYSTEMEXTMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/MibsAndOids/WLSXWLANMIB.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/CSF.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/Item.pm \
../GLPlugin/lib/Monitoring/GLPlugin/SNMP/TableItem.pm \
../GLPlugin/lib/Monitoring/GLPlugin/UPNP.pm
EXTRA_MODULES=\
Classes/UPNP/AVM/FritzBox7390/Components/InterfaceSubsystem.pm \
Classes/UPNP/AVM/FritzBox7390/Components/SmartHomeSubsystem.pm \
Classes/UPNP/AVM/FritzBox7390.pm \
Classes/UPNP/AVM.pm \
Classes/UPNP.pm \
Classes/Server/LinuxLocal.pm \
Classes/Server/WindowsLocal.pm \
Classes/Server/SolarisLocal.pm \
Classes/Server/Linux.pm \
Classes/Server/Linux/Component/CpuSubsystem.pm \
Classes/Server/Linux/Component/EnvironmentalSubsystem.pm \
Classes/Server/Linux/Component/MemSubsystem.pm \
Classes/Bintec/Bibo/Components/EnvironmentalSubsystem.pm \
Classes/Bintec/Bibo/Components/MemSubsystem.pm \
Classes/Bintec/Bibo/Components/CpuSubsystem.pm \
Classes/Bintec/Bibo.pm \
Classes/Bintec.pm \
Classes/Bluecat/AddressManager/Component/MgmtSubsystem.pm \
Classes/Bluecat/AddressManager/Component/MemSubsystem.pm \
Classes/Bluecat/AddressManager/Component/HaSubsystem.pm \
Classes/Bluecat/AddressManager.pm \
Classes/Bluecat/DnsDhcpServer/Component/HaSubsystem.pm \
Classes/Bluecat/DnsDhcpServer/Component/ProcessSubsystem.pm \
Classes/Bluecat/DnsDhcpServer.pm \
Classes/Bluecat.pm \
Classes/Cisco/CISCOLICENSEMGMTMIB/Component/KeySubsystem.pm \
Classes/Cisco/CISCOSMARTLICMIB/Component/KeySubsystem.pm \
Classes/Cisco/CISCOBGP4MIB/Components/PeerSubsystem.pm \
Classes/Cisco/CISCOEIGRPMIB/Components/PeerSubsystem.pm \
Classes/Cisco/CISCOPORTSECURITYMIB/Component/InterfaceSubsystem.pm \
Classes/Cisco/OLDCISCOINTERFACESMIB/Component/InterfaceSubsystem.pm \
Classes/Cisco/CISCOIPSECFLOWMONITOR/Component/VpnSubsystem.pm \
Classes/Cisco/CISCOENHANCEDMEMPOOLMIB/Component/MemSubsystem.pm \
Classes/Cisco/CISCOPROCESSMIB/Component/MemSubsystem.pm \
Classes/Cisco/CISCOMEMORYPOOLMIB/Component/MemSubsystem.pm \
Classes/Cisco/CISCOENTITYFRUCONTROLMIB/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/CISCOENTITYFRUCONTROLMIB/Component/FanSubsystem.pm \
Classes/Cisco/CISCOENTITYFRUCONTROLMIB/Component/ModuleSubsystem.pm \
Classes/Cisco/CISCOENTITYFRUCONTROLMIB/Component/PowersupplySubsystem.pm \
Classes/Cisco/CISCOENTITYSENSORMIB/Component/SensorSubsystem.pm \
Classes/Cisco/CISCOENTITYALARMMIB/Component/AlarmSubsystem.pm \
Classes/Cisco/CISCOENVMONMIB/Component/TemperatureSubsystem.pm \
Classes/Cisco/CISCOENVMONMIB/Component/PowersupplySubsystem.pm \
Classes/Cisco/CISCOENVMONMIB/Component/VoltageSubsystem.pm \
Classes/Cisco/CISCOENVMONMIB/Component/FanSubsystem.pm \
Classes/Cisco/CISCOREMOTEACCESSMONITORMIB/Component/VpnSubsystem.pm \
Classes/Cisco/CISCORTTMONMIB/Component/RttSubsystem.pm \
Classes/Cisco/CISCOSTACKMIB/Component/StackSubsystem.pm \
Classes/Cisco/CISCOSTACKWISEMIB/Component/StackSubsystem.pm \
Classes/Cisco/ASA.pm \
Classes/Cisco/IOS/Component/HaSubsystem.pm \
Classes/Cisco/IOS/Component/ConfigSubsystem.pm \
Classes/Cisco/IOS/Component/CpuSubsystem.pm \
Classes/Cisco/IOS/Component/MemSubsystem.pm \
Classes/Cisco/IOS/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/IOS/Component/ConnectionSubsystem.pm \
Classes/Cisco/IOS/Component/NatSubsystem.pm \
Classes/Cisco/IOS/Component/BgpSubsystem.pm \
Classes/Cisco/IOS.pm \
Classes/Cisco/NXOS/Component/CpuSubsystem.pm \
Classes/Cisco/NXOS/Component/MemSubsystem.pm \
Classes/Cisco/NXOS/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/NXOS/Component/FexSubsystem.pm \
Classes/Cisco/NXOS.pm \
Classes/Cisco/WLC/Component/HaSubsystem.pm \
Classes/Cisco/WLC/Component/MemSubsystem.pm \
Classes/Cisco/WLC/Component/CpuSubsystem.pm \
Classes/Cisco/WLC/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/WLC/Component/WlanSubsystem.pm \
Classes/Cisco/WLC.pm \
Classes/Cisco/PrimeNCS.pm \
Classes/Cisco/UCOS.pm \
Classes/Cisco/CCM/Component/PhoneSubsystem.pm \
Classes/Cisco/CCM/Component/CmSubsystem.pm \
Classes/Cisco/CCM.pm \
Classes/Cisco/AsyncOS/Component/KeySubsystem.pm \
Classes/Cisco/AsyncOS/Component/MemSubsystem.pm \
Classes/Cisco/AsyncOS/Component/CpuSubsystem.pm \
Classes/Cisco/AsyncOS/Component/TemperatureSubsystem.pm \
Classes/Cisco/AsyncOS/Component/PowersupplySubsystem.pm \
Classes/Cisco/AsyncOS/Component/FanSubsystem.pm \
Classes/Cisco/AsyncOS/Component/RaidSubsystem.pm \
Classes/Cisco/AsyncOS/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/AsyncOS.pm \
Classes/Cisco/SB/Component/MemSubsystem.pm \
Classes/Cisco/SB/Component/CpuSubsystem.pm \
Classes/Cisco/SB/Component/EnvironmentalSubsystem.pm \
Classes/Cisco/SB.pm \
Classes/Cisco.pm \
Classes/OneOS/Component/EnvironmentalSubsystem.pm \
Classes/OneOS/Component/CpuSubsystem.pm \
Classes/OneOS/Component/MemSubsystem.pm \
Classes/OneOS.pm \
Classes/Nortel/S5/Component/EnvironmentalSubsystem.pm \
Classes/Nortel/S5/Component/CpuSubsystem.pm \
Classes/Nortel/S5/Component/MemSubsystem.pm \
Classes/Nortel/S5.pm \
Classes/Nortel.pm \
Classes/Juniper/JunOS/Component/BgpSubsystem.pm \
Classes/Juniper/JunOS.pm \
Classes/Juniper/NetScreen/Component/CpuSubsystem.pm \
Classes/Juniper/NetScreen/Component/MemSubsystem.pm \
Classes/Juniper/NetScreen/Component/EnvironmentalSubsystem.pm \
Classes/Juniper/NetScreen/Component/VsdSubsystem.pm \
Classes/Juniper/NetScreen.pm \
Classes/Juniper/IVE/Component/MemSubsystem.pm \
Classes/Juniper/IVE/Component/CpuSubsystem.pm \
Classes/Juniper/IVE/Component/EnvironmentalSubsystem.pm \
Classes/Juniper/IVE/Component/DiskSubsystem.pm \
Classes/Juniper/IVE/Component/UserSubsystem.pm \
Classes/Juniper/IVE.pm \
Classes/Juniper/SRX/Component/EnvironmentalSubsystem.pm \
Classes/Juniper/SRX/Component/CpuSubsystem.pm \
Classes/Juniper/SRX/Component/MemSubsystem.pm \
Classes/Juniper/SRX.pm \
Classes/Juniper.pm \
Classes/AlliedTelesyn.pm \
Classes/Fortigate/Component/HaSubsystem.pm \
Classes/Fortigate/Component/DiskSubsystem.pm \
Classes/Fortigate/Component/MemSubsystem.pm \
Classes/Fortigate/Component/CpuSubsystem.pm \
Classes/Fortigate/Component/VpnSubsystem.pm \
Classes/Fortigate/Component/EnvironmentalSubsystem.pm \
Classes/Fortigate/Component/SensorSubsystem.pm \
Classes/Fortigate.pm \
Classes/FabOS/Component/MemSubsystem.pm \
Classes/FabOS/Component/CpuSubsystem.pm \
Classes/FabOS/Component/EnvironmentalSubsystem.pm \
Classes/FabOS/Component/SensorSubsystem.pm \
Classes/FabOS/Component/InterfaceSubsystem.pm \
Classes/FabOS.pm \
Classes/HH3C/Component/EntitySubsystem.pm \
Classes/HH3C/Component/EnvironmentalSubsystem.pm \
Classes/HH3C/Component/MemSubsystem.pm \
Classes/HH3C/Component/CpuSubsystem.pm \
Classes/HH3C.pm \
Classes/Huawei/Component/EnvironmentalSubsystem.pm \
Classes/Huawei/Component/CpuSubsystem.pm \
Classes/Huawei/Component/MemSubsystem.pm \
Classes/Huawei/Component/PeerSubsystem.pm \
Classes/Huawei/CloudEngine.pm \
Classes/Huawei.pm \
Classes/HP/Procurve/Component/MemSubsystem.pm \
Classes/HP/Procurve/Component/CpuSubsystem.pm \
Classes/HP/Procurve/Component/EnvironmentalSubsystem.pm \
Classes/HP/Procurve/Component/SensorSubsystem.pm \
Classes/HP/Procurve.pm \
Classes/HP/Aruba/Component/MemSubsystem.pm \
Classes/HP/Aruba/Component/CpuSubsystem.pm \
Classes/HP/Aruba/Component/TemperatureSubsystem.pm \
Classes/HP/Aruba/Component/FanSubsystem.pm \
Classes/HP/Aruba/Component/PowersupplySubsystem.pm \
Classes/HP/Aruba/Component/EnvironmentalSubsystem.pm \
Classes/HP/Aruba.pm \
Classes/HP.pm \
Classes/MEOS.pm \
Classes/Brocade.pm \
Classes/SecureOS.pm \
Classes/HSRP/Component/HSRPSubsystem.pm \
Classes/HSRP.pm \
Classes/IFMIB/Component/LinkAggregation.pm \
Classes/IFMIB/Component/InterfaceSubsystem.pm \
Classes/IFMIB/Component/StackSubsystem.pm \
Classes/IFMIB.pm \
Classes/IPFORWARDMIB/Component/RoutingSubsystem.pm \
Classes/IPFORWARDMIB.pm \
Classes/IPMIB/Component/RoutingSubsystem.pm \
Classes/IPMIB.pm \
Classes/VRRPMIB/Component/VRRPSubsystem.pm \
Classes/VRRPMIB.pm \
Classes/HOSTRESOURCESMIB/Component/ClockSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/DeviceSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/DiskSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/EnvironmentalSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/CpuSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/MemSubsystem.pm \
Classes/HOSTRESOURCESMIB/Component/UptimeSubsystem.pm \
Classes/HOSTRESOURCESMIB.pm \
Classes/LMSENSORSMIB/Component/EnvironmentalSubsystem.pm \
Classes/LMSENSORSMIB/Component/FanSubsystem.pm \
Classes/LMSENSORSMIB/Component/TemperatureSubsystem.pm \
Classes/LMSENSORSMIB.pm \
Classes/ENTITYSENSORMIB.pm \
Classes/ENTITYSENSORMIB/Component/EnvironmentalSubsystem.pm \
Classes/OSPF/Component/NeighborSubsystem.pm \
Classes/OSPF.pm \
Classes/BGP/Component/PeerSubsystem.pm \
Classes/BGP.pm \
Classes/FCMGMT/Component/EnvironmentalSubsystem.pm \
Classes/FCMGMT/Component/SensorSubsystem.pm \
Classes/FCMGMT.pm \
Classes/FCEOS/Components/EnvironmentalSubsystem.pm \
Classes/FCEOS/Components/FruSubsystem.pm \
Classes/FCEOS.pm \
Classes/UCDMIB/Components/MemSubsystem.pm \
Classes/UCDMIB/Components/SwapSubsystem.pm \
Classes/UCDMIB/Components/CpuSubsystem.pm \
Classes/UCDMIB/Components/LoadSubsystem.pm \
Classes/UCDMIB/Components/DiskSubsystem.pm \
Classes/UCDMIB/Components/ProcessSubsystem.pm \
Classes/UCDMIB.pm \
Classes/F5/F5BIGIP/Component/ConfigSubsystem.pm \
Classes/F5/F5BIGIP/Component/ConnectionSubsystem.pm \
Classes/F5/F5BIGIP/Component/CpuSubsystem.pm \
Classes/F5/F5BIGIP/Component/DiskSubsystem.pm \
Classes/F5/F5BIGIP/Component/EnvironmentalSubsystem.pm \
Classes/F5/F5BIGIP/Component/FanSubsystem.pm \
Classes/F5/F5BIGIP/Component/GTM.pm \
Classes/F5/F5BIGIP/Component/HaSubsystem.pm \
Classes/F5/F5BIGIP/Component/VipSubsystem.pm \
Classes/F5/F5BIGIP/Component/LTM.pm \
Classes/F5/F5BIGIP/Component/MemSubsystem.pm \
Classes/F5/F5BIGIP/Component/PowersupplySubsystem.pm \
Classes/F5/F5BIGIP/Component/TemperatureSubsystem.pm \
Classes/F5/F5BIGIP.pm \
Classes/F5.pm \
Classes/CheckPoint/Firewall1/Component/EnvironmentalSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/TemperatureSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/FanSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/VoltageSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/PowersupplySubsystem.pm \
Classes/CheckPoint/Firewall1/Component/DiskSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/MngmtSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/SvnSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/FwSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/HaSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/CpuSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/MemSubsystem.pm \
Classes/CheckPoint/Firewall1/Component/VpnSubsystem.pm \
Classes/CheckPoint/Firewall1.pm \
Classes/CheckPoint/VSX/Component/FwSubsystem.pm \
Classes/CheckPoint/VSX.pm \
Classes/CheckPoint/Gaia.pm \
Classes/CheckPoint.pm \
Classes/Clavister/Firewall1/Component/EnvironmentalSubsystem.pm \
Classes/Clavister/Firewall1/Component/CpuSubsystem.pm \
Classes/Clavister/Firewall1/Component/MemSubsystem.pm \
Classes/Clavister/Firewall1.pm \
Classes/Clavister.pm \
Classes/SGOS/Component/MemSubsystem.pm \
Classes/SGOS/Component/CpuSubsystem.pm \
Classes/SGOS/Component/EnvironmentalSubsystem.pm \
Classes/SGOS/Component/SensorSubsystem.pm \
Classes/SGOS/Component/DiskSubsystem.pm \
Classes/SGOS/Component/SecuritySubsystem.pm \
Classes/SGOS/Component/ConnectionSubsystem.pm \
Classes/SGOS.pm \
Classes/AVOS/Component/KeySubsystem.pm \
Classes/AVOS/Component/SecuritySubsystem.pm \
Classes/AVOS/Component/ConnectionSubsystem.pm \
Classes/AVOS/Component/MemSubsystem.pm \
Classes/AVOS/Component/CpuSubsystem.pm \
Classes/AVOS.pm \
Classes/Alcatel/OmniAccess/Component/HaSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/MemSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/CpuSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/PowersupplySubsystem.pm \
Classes/Alcatel/OmniAccess/Component/FanSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/StorageSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/EnvironmentalSubsystem.pm \
Classes/Alcatel/OmniAccess/Component/WlanSubsystem.pm \
Classes/Alcatel/OmniAccess.pm \
Classes/Alcatel.pm \
Classes/ALARMMIB/Component/AlarmSubsystem.pm \
Classes/Foundry/Component/SLBSubsystem.pm \
Classes/Foundry/Component/MemSubsystem.pm \
Classes/Foundry/Component/CpuSubsystem.pm \
Classes/Foundry/Component/EnvironmentalSubsystem.pm \
Classes/Foundry/Component/PowersupplySubsystem.pm \
Classes/Foundry/Component/FanSubsystem.pm \
Classes/Foundry/Component/TemperatureSubsystem.pm \
Classes/Foundry/Component/ModuleSubsystem.pm \
Classes/Foundry.pm \
Classes/RAPIDCITYMIB/Component/EnvironmentalSubsystem.pm \
Classes/RAPIDCITYMIB/Component/PowersupplySubsystem.pm \
Classes/RAPIDCITYMIB/Component/FanSubsystem.pm \
Classes/RAPIDCITYMIB/Component/TemperatureSubsystem.pm \
Classes/RAPIDCITYMIB.pm \
Classes/PaloAlto/Component/SessionSubsystem.pm \
Classes/PaloAlto/Component/MemSubsystem.pm \
Classes/PaloAlto/Component/CpuSubsystem.pm \
Classes/PaloAlto/Component/EnvironmentalSubsystem.pm \
Classes/PaloAlto/Component/HaSubsystem.pm \
Classes/PaloAlto.pm \
Classes/Bluecoat.pm \
Classes/Cumulus.pm \
Classes/Eltex/Access/Component/EnvironmentalSubsystem.pm \
Classes/Eltex/Access.pm \
Classes/Eltex/Aggregation/Component/EnvironmentalSubsystem.pm \
Classes/Eltex/Aggregation.pm \
Classes/Eltex/MES/Component/CpuSubsystem.pm \
Classes/Eltex/MES/Component/HaSubsystem.pm \
Classes/Eltex.pm \
Classes/Netgear.pm \
Classes/Lantronix.pm \
Classes/Lantronix/SLS.pm \
Classes/Arista/ARISTABGP4V2MIB/Components/PeerSubsystem.pm \
Classes/Arista/Component/EnvironmentalSubsystem.pm \
Classes/Arista/Component/DiskSubsystem.pm \
Classes/Arista.pm \
Classes/Riverbed/SteelheadEX/Component/EnvironmentalSubsystem.pm \
Classes/Riverbed/Steelhead/Component/EnvironmentalSubsystem.pm \
Classes/Riverbed/Steelhead.pm \
Classes/Riverbed.pm \
Classes/Vormetric/Component/CpuSubsystem.pm \
Classes/Vormetric/Component/DiskSubsystem.pm \
Classes/Vormetric/Component/EnvironmentalSubsystem.pm \
Classes/Vormetric/Component/MemSubsystem.pm \
Classes/Vormetric.pm \
Classes/Lancom/Component/CpuSubsystem.pm \
Classes/Lancom/Component/EnvironmentalSubsystem.pm \
Classes/Lancom/Component/MemSubsystem.pm \
Classes/Lancom.pm \
Classes/DrayTek/Vigor/Component/CpuSubsystem.pm \
Classes/DrayTek/Vigor/Component/EnvironmentalSubsystem.pm \
Classes/DrayTek/Vigor/Component/MemSubsystem.pm \
Classes/DrayTek/Vigor.pm \
Classes/DrayTek.pm \
Classes/Barracuda/Component/EnvironmentalSubsystem.pm \
Classes/Barracuda/Component/HaSubsystem.pm \
Classes/Barracuda/Component/FwSubsystem.pm \
Classes/Barracuda.pm \
Classes/Versa/Component/CpuSubsystem.pm \
Classes/Versa/Component/EnvironmentalSubsystem.pm \
Classes/Versa/Component/MemSubsystem.pm \
Classes/Versa/Component/PeerSubsystem.pm \
Classes/Versa.pm \
Classes/PulseSecure/Gateway/Component/UserSubsystem.pm \
Classes/PulseSecure/Gateway/Component/EnvironmentalSubsystem.pm \
Classes/PulseSecure/Gateway/Component/CpuSubsystem.pm \
Classes/PulseSecure/Gateway/Component/DiskSubsystem.pm \
Classes/PulseSecure/Gateway/Component/MemSubsystem.pm \
Classes/PulseSecure/Gateway.pm \
Classes/Device.pm
SED=/bin/sed
GREP=/bin/grep
CAT=/bin/cat
ECHO=/bin/echo
if DISABLE_STANDALONE
STANDALONE = no
else
STANDALONE = yes
endif
SUFFIXES = .pl .pm .sh
VPATH=$(top_srcdir) $(top_srcdir)/plugins-scripts $(top_srcdir)/plugins-scripts/t
EXTRA_DIST=$(libexec_SCRIPTS).pl $(EXTRA_MODULES) $(GL_MODULES)
CLEANFILES=$(libexec_SCRIPTS)
AM_INSTALL_PROGRAM_FLAGS=@INSTALL_OPTS@
.pm :
$(AWK) -f ./subst $< > $@
chmod +x $@
.pl :
$(AWK) -f ./subst $< > $@
chmod +x $@
.sh :
$(AWK) -f ./subst $< > $@
chmod +x $@
$(libexec_SCRIPTS) : $(EXTRA_DIST)
$(ECHO) "#! #PERL# -w" | $(AWK) -f ./subst > $@
$(ECHO) "# nagios: +epn" >> $@
$(ECHO) >> $@
if [ "${STANDALONE}" == "yes" ]; then \
$(ECHO) i am standalone; \
for m in ${GL_MODULES}; do \
$(SED) -e 's/^1;//g' < $$m | $(SED) -e '/^__END__/,$$d' | $(SED) -e '/^__PACKAGE__/,$$d' | $(AWK) -f ./subst >> $@; \
done \
fi
for m in ${EXTRA_MODULES}; do \
$(SED) -e 's/^1;//g' < $$m | $(SED) -e '/^__END__/,$$d' | $(AWK) -f ./subst >> $@; \
done
$(ECHO) "package main;" >> $@
$(CAT) $(libexec_SCRIPTS).pl | $(AWK) -f ./subst >> $@
chmod +x $@

View file

@ -1,634 +0,0 @@
# /usr/bin/perl -w
use strict;
no warnings qw(once);
if ( ! grep /BEGIN/, keys %Monitoring::GLPlugin::) {
eval {
require Monitoring::GLPlugin;
require Monitoring::GLPlugin::SNMP;
require Monitoring::GLPlugin::UPNP;
};
if ($@) {
printf "UNKNOWN - module Monitoring::GLPlugin was not found. Either build a standalone version of this plugin or set PERL5LIB\n";
printf "%s\n", $@;
exit 3;
}
}
my $plugin = Classes::Device->new(
shortname => '',
usage => 'Usage: %s [ -v|--verbose ] [ -t <timeout> ] '.
'--mode <what-to-do> '.
'--hostname <network-component> --community <snmp-community>'.
' ...]',
version => '$Revision: #PACKAGE_VERSION# $',
blurb => 'This plugin checks various parameters of network components ',
url => 'http://labs.consol.de/nagios/check_nwc_health',
timeout => 60,
plugin => $Monitoring::GLPlugin::pluginname,
);
$plugin->add_mode(
internal => 'device::hardware::health',
spec => 'hardware-health',
alias => undef,
help => 'Check the status of environmental equipment (fans, temperatures, power)',
);
$plugin->add_mode(
internal => 'device::hardware::load',
spec => 'cpu-load',
alias => ['cpu-usage'],
help => 'Check the CPU load of the device',
);
$plugin->add_mode(
internal => 'device::hardware::memory',
spec => 'memory-usage',
alias => undef,
help => 'Check the memory usage of the device',
);
$plugin->add_mode(
internal => 'device::disk::usage',
spec => 'disk-usage',
alias => undef,
help => 'Check the disk usage of the device',
);
$plugin->add_mode(
internal => 'device::interfaces::usage',
spec => 'interface-usage',
alias => undef,
help => 'Check the utilization of interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::errors',
spec => 'interface-errors',
alias => undef,
help => 'Check the error-rate of interfaces (without discards)',
);
$plugin->add_mode(
internal => 'device::interfaces::discards',
spec => 'interface-discards',
alias => undef,
help => 'Check the discard-rate of interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::operstatus',
spec => 'interface-status',
alias => undef,
help => 'Check the status of interfaces (oper/admin)',
);
$plugin->add_mode(
internal => 'device::interfaces::duplex',
spec => 'interface-duplex',
alias => undef,
help => 'Check if interfaces operate in duplex mode',
);
$plugin->add_mode(
internal => 'device::interfaces::complete',
spec => 'interface-health',
alias => undef,
help => 'Check everything interface',
);
$plugin->add_mode(
internal => 'device::interfaces::nat::sessions::count',
spec => 'interface-nat-count-sessions',
alias => undef,
help => 'Count the number of nat sessions',
);
$plugin->add_mode(
internal => 'device::interfaces::nat::rejects',
spec => 'interface-nat-rejects',
alias => undef,
help => 'Count the number of nat sessions rejected due to lack of resources',
);
$plugin->add_mode(
internal => 'device::interfaces::list',
spec => 'list-interfaces',
alias => undef,
help => 'Show the interfaces of the device and update the name cache',
);
$plugin->add_mode(
internal => 'device::interfaces::listdetail',
spec => 'list-interfaces-detail',
alias => undef,
help => 'Show the interfaces of the device and some details',
);
$plugin->add_mode(
internal => 'device::interfaces::availability',
spec => 'interface-availability',
alias => undef,
help => 'Show the availability (oper != up) of interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::aggregation::availability',
spec => 'link-aggregation-availability',
alias => undef,
help => 'Check the percentage of up interfaces in a link aggregation',
);
$plugin->add_mode(
internal => 'device::interfaces::ifstack::status',
spec => 'interface-stack-status',
alias => undef,
help => 'Check the status of interface sublayers (mostly layer 2)',
);
$plugin->add_mode(
internal => 'device::interfaces::ifstack::availability',
spec => 'interface-stack-availability',
alias => undef,
help => 'Check the percentage of available sublayer interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::etherstats',
spec => 'interface-etherstats',
alias => undef,
help => 'Check the ethernet statistics of interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::uptime',
spec => 'interface-uptime',
alias => undef,
help => 'Check state changes of interfaces',
);
$plugin->add_mode(
internal => 'device::interfaces::portsecurity',
spec => 'interface-security',
alias => undef,
help => 'Check interfaces for security violations',
);
$plugin->add_mode(
internal => 'device::routes::list',
spec => 'list-routes',
alias => undef,
help => 'Show the configured routes',
help => 'Check the percentage of up interfaces in a link aggregation',
);
$plugin->add_mode(
internal => 'device::routes::exists',
spec => 'route-exists',
alias => undef,
help => 'Check if a route exists. (--name is the dest, --name2 check also the next hop)',
);
$plugin->add_mode(
internal => 'device::routes::count',
spec => 'count-routes',
alias => undef,
help => 'Count the routes. (--name is the dest, --name2 is the hop)',
);
$plugin->add_mode(
internal => 'device::vpn::status',
spec => 'vpn-status',
alias => undef,
help => 'Check the status of vpns (up/down)',
);
$plugin->add_mode(
internal => 'device::vpn::sessions',
spec => 'vpn-sessions',
alias => undef,
help => 'Check the number of vpn sessions (users, errors)',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::usage',
spec => 'fc-interface-usage',
alias => undef,
help => 'Check the utilization of fibrechannel interfaces',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::errors',
spec => 'fc-interface-errors',
alias => undef,
help => 'Check the error-rate of fibrechannel interfaces',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::discards',
spec => 'fc-interface-discards',
alias => undef,
help => 'Check the discard-rate of interfaces',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::operstatus',
spec => 'fc-interface-status',
alias => undef,
help => 'Check the status of interfaces (oper/admin)',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::complete',
spec => 'fc-interface-health',
alias => undef,
help => 'Check everything interface',
);
$plugin->add_mode(
internal => 'device::fcinterfaces::list',
spec => 'fc-list-interfaces',
alias => undef,
help => 'Show the fcal interfaces of the device and update the name cache',
);
$plugin->add_mode(
internal => 'device::shinken::interface',
spec => 'create-shinken-service',
alias => undef,
help => 'Create a Shinken service definition',
);
$plugin->add_mode(
internal => 'device::hsrp::state',
spec => 'hsrp-state',
alias => undef,
help => 'Check the state in a HSRP group',
);
$plugin->add_mode(
internal => 'device::hsrp::failover',
spec => 'hsrp-failover',
alias => undef,
help => 'Check if a HSRP group\'s nodes have changed their roles',
);
$plugin->add_mode(
internal => 'device::hsrp::list',
spec => 'list-hsrp-groups',
alias => undef,
help => 'Show the HSRP groups configured on this device',
);
$plugin->add_mode(
internal => 'device::vrrp::state',
spec => 'vrrp-state',
alias => undef,
help => 'Check the state in a VRRP group',
);
$plugin->add_mode(
internal => 'device::vrrp::failover',
spec => 'vrrp-failover',
alias => undef,
help => 'Check if a VRRP group\'s nodes have changed their roles',
);
$plugin->add_mode(
internal => 'device::vrrp::list',
spec => 'list-vrrp-groups',
alias => undef,
help => 'Show the VRRP groups configured on this device',
);
$plugin->add_mode(
internal => 'device::bgp::peer::status',
spec => 'bgp-peer-status',
alias => undef,
help => 'Check status of BGP peers',
);
$plugin->add_mode(
internal => 'device::bgp::peer::count',
spec => 'count-bgp-peers',
alias => undef,
help => 'Count the number of BGP peers',
);
$plugin->add_mode(
internal => 'device::bgp::peer::watch',
spec => 'watch-bgp-peers',
alias => undef,
help => 'Watch BGP peers appear and disappear',
);
$plugin->add_mode(
internal => 'device::bgp::peer::list',
spec => 'list-bgp-peers',
alias => undef,
help => 'Show BGP peers known to this device',
);
$plugin->add_mode(
internal => 'device::bgp::prefix::count',
spec => 'count-bgp-prefixes',
alias => undef,
help => 'Count the number of BGP prefixes (for specific peer with --name)',
);
$plugin->add_mode(
internal => 'device::ospf::neighbor::status',
spec => 'ospf-neighbor-status',
alias => undef,
help => 'Check status of OSPF neighbors',
);
$plugin->add_mode(
internal => 'device::ospf::neighbor::watch',
spec => 'watch-ospf-neighbors',
alias => undef,
help => 'Watch OSPF neighbors appear and disappear',
);
$plugin->add_mode(
internal => 'device::ospf::neighbor::list',
spec => 'list-ospf-neighbors',
alias => undef,
help => 'Show OSPF neighbors',
);
$plugin->add_mode(
internal => 'device::eigrp::peer::count',
spec => 'count-eigrp-peers',
alias => undef,
help => 'Count the number of EIGRP peers',
);
$plugin->add_mode(
internal => 'device::eigrp::peer::status',
spec => 'eigrp-peer-status',
alias => undef,
help => 'Check status (existance) of EIGRP peers',
);
$plugin->add_mode(
internal => 'device::eigrp::peer::watch',
spec => 'watch-eigrp-peers',
alias => undef,
help => 'Watch EIGRP peers appear and disappear',
);
$plugin->add_mode(
internal => 'device::eigrp::peer::list',
spec => 'list-eigrp-peers',
alias => undef,
help => 'Show EIGRP peers',
);
$plugin->add_mode(
internal => 'device::ha::status',
spec => 'ha-status',
alias => undef,
help => 'Check the status of a clustered setup',
);
$plugin->add_mode(
internal => 'device::ha::role',
spec => 'ha-role',
alias => undef,
help => 'Check the role in a ha group',
);
$plugin->add_mode(
internal => 'device::svn::status',
spec => 'svn-status',
alias => undef,
help => 'Check the status of the svn subsystem',
);
$plugin->add_mode(
internal => 'device::mngmt::status',
spec => 'mngmt-status',
alias => undef,
help => 'Check the status of the management subsystem',
);
$plugin->add_mode(
internal => 'device::process::status',
spec => 'process-status',
alias => undef,
help => 'Check the status of the running processes'
);
$plugin->add_mode(
internal => 'device::fw::policy::installed',
spec => 'fw-policy',
alias => undef,
help => 'Check the installed firewall policy',
);
$plugin->add_mode(
internal => 'device::fw::policy::connections',
spec => 'fw-connections',
alias => undef,
help => 'Check the number of firewall policy connections',
);
$plugin->add_mode(
internal => 'device::lb::session::usage',
spec => 'session-usage',
alias => undef,
help => 'Check the session limits of a load balancer',
);
$plugin->add_mode(
internal => 'device::security',
spec => 'security-status',
alias => undef,
help => 'Check if there are security-relevant incidents',
);
$plugin->add_mode(
internal => 'device::lb::pool::completeness',
spec => 'pool-completeness',
alias => undef,
help => 'Check the members of a load balancer pool',
);
$plugin->add_mode(
internal => 'device::lb::pool::connections',
spec => 'pool-connections',
alias => undef,
help => 'Check the number of connections of a load balancer pool',
);
$plugin->add_mode(
internal => 'device::lb::pool::complections',
spec => 'pool-complections',
alias => undef,
help => 'Check the members and connections of a load balancer pool',
);
$plugin->add_mode(
internal => 'device::wideip::status',
spec => 'wideip-status',
alias => undef,
help => 'Check the status of F5 Wide IPs',
);
$plugin->add_mode(
internal => 'device::lb::pool::list',
spec => 'list-pools',
alias => undef,
help => 'List load balancer pools',
);
$plugin->add_mode(
internal => 'device::vip::list',
spec => 'list-vips',
alias => undef,
help => 'List load balancer vips',
);
$plugin->add_mode(
internal => 'device::vip::watch',
spec => 'watch-vips',
alias => undef,
help => 'Watch load balancer vips',
);
$plugin->add_mode(
internal => 'device::vip::watch',
spec => 'watch-vips',
alias => undef,
help => 'Watch load balancer vips',
);
$plugin->add_mode(
internal => 'device::vip::connect',
spec => 'connect-vips',
alias => ['connected-vips'],
help => 'Check connectivity with load balancer vips',
);
$plugin->add_mode(
internal => 'device::licenses::validate',
spec => 'check-licenses',
alias => undef,
help => 'Check the installed licences/keys',
);
$plugin->add_mode(
internal => 'device::users::count',
spec => 'count-users',
help => 'Count the (connected) users/sessions',
);
$plugin->add_mode(
internal => 'device::config::status',
spec => 'check-config',
alias => undef,
help => 'Check the status of configs (cisco, unsaved config changes)',
);
$plugin->add_mode(
internal => 'device::connections::check',
spec => 'check-connections',
alias => undef,
help => 'Check the quality of connections',
);
$plugin->add_mode(
internal => 'device::connections::count',
spec => 'count-connections',
alias => ['count-connections-client', 'count-connections-server', 'count-sessions'],
help => 'Check the number of connections/sessions (-client, -server is possible)',
);
$plugin->add_mode(
internal => 'device::cisco::fex::watch',
spec => 'watch-fexes',
alias => undef,
help => 'Check if FEXes appear and disappear (use --lookup)',
);
$plugin->add_mode(
internal => 'device::rtt::check',
spec => 'check-rtt',
alias => undef,
help => 'Check rtt monitors (Cisco SLA)',
);
$plugin->add_mode(
internal => 'device::hardware::chassis::health',
spec => 'chassis-hardware-health',
alias => undef,
help => 'Check the status of stacked switches and chassis, count modules and ports',
);
$plugin->add_mode(
internal => 'device::wlan::aps::status',
spec => 'accesspoint-status',
alias => undef,
help => 'Check the status of access points',
);
$plugin->add_mode(
internal => 'device::wlan::aps::count',
spec => 'count-accesspoints',
alias => undef,
help => 'Check if the number of access points is within a certain range',
);
$plugin->add_mode(
internal => 'device::wlan::aps::watch',
spec => 'watch-accesspoints',
alias => undef,
help => 'Check if access points appear and disappear (use --lookup)',
);
$plugin->add_mode(
internal => 'device::wlan::aps::clients',
spec => 'count-accesspoint-clients',
alias => undef,
help => 'Check if the number of access point clients is within a certain range',
);
$plugin->add_mode(
internal => 'device::wlan::aps::list',
spec => 'list-accesspoints',
alias => undef,
help => 'List access points managed by this device',
);
$plugin->add_mode(
internal => 'device::phone::cmstatus',
spec => 'phone-cm-status',
alias => undef,
help => 'Check if the callmanager is up',
);
$plugin->add_mode(
internal => 'device::phone::status',
spec => 'phone-status',
alias => undef,
help => 'Check the number of registered/unregistered/rejected phones',
);
$plugin->add_mode(
internal => 'device::smarthome::device::list',
spec => 'list-smart-home-devices',
alias => undef,
help => 'List Fritz!DECT 200 plugs managed by this device',
);
$plugin->add_mode(
internal => 'device::smarthome::device::status',
spec => 'smart-home-device-status',
alias => undef,
help => 'Check if a Fritz!DECT 200 plug is on (or Comet DECT)',
);
$plugin->add_mode(
internal => 'device::smarthome::device::energy',
spec => 'smart-home-device-energy',
alias => undef,
help => 'Show the current power consumption of a Fritz!DECT 200 plug',
);
$plugin->add_mode(
internal => 'device::smarthome::device::consumption',
spec => 'smart-home-device-consumption',
alias => undef,
help => 'Show the cumulated power consumption of a Fritz!DECT 200 plug',
);
$plugin->add_mode(
internal => 'device::smarthome::device::temperature',
spec => 'smart-home-device-temperature',
alias => undef,
help => 'Show the temperature measured by a Fritz! compatible device',
);
$plugin->add_default_modes();
$plugin->add_snmp_modes();
$plugin->add_snmp_args();
$plugin->add_default_args();
$plugin->mod_arg("name",
help => "--name
The name of an interface (ifDescr) or pool or ...",
);
$plugin->add_arg(
spec => 'alias=s',
help => "--alias
The alias name of a 64bit-interface (ifAlias)",
required => 0,
);
$plugin->add_arg(
spec => 'ifspeedin=i',
help => "--ifspeedin
Override the ifspeed oid of an interface (only inbound)",
required => 0,
);
$plugin->add_arg(
spec => 'ifspeedout=i',
help => "--ifspeedout
Override the ifspeed oid of an interface (only outbound)",
required => 0,
);
$plugin->add_arg(
spec => 'ifspeed=i',
help => "--ifspeed
Override the ifspeed oid of an interface",
required => 0,
);
$plugin->add_arg(
spec => 'role=s',
help => "--role
The role of this device in a hsrp group (active/standby/listen)",
required => 0,
);
$plugin->add_arg(
spec => 'nosensors',
help => "--nosensors
Skip tables with voltage/current sensors (Nexus)",
required => 0,
hidden => 1,
);
$plugin->getopts();
$plugin->classify();
$plugin->validate_args();
if (! $plugin->check_messages()) {
$plugin->init();
if (! $plugin->check_messages()) {
$plugin->add_ok($plugin->get_summary())
if $plugin->get_summary();
$plugin->add_ok($plugin->get_extendedinfo(" "))
if $plugin->get_extendedinfo();
}
} elsif ($plugin->opts->snmpwalk && $plugin->opts->offline) {
;
} else {
;
}
my ($code, $message) = $plugin->opts->multiline ?
$plugin->check_messages(join => "\n", join_all => ', ') :
$plugin->check_messages(join => ', ', join_all => ', ');
$message .= sprintf "\n%s\n", $plugin->get_info("\n")
if $plugin->opts->verbose >= 1;
$plugin->nagios_exit($code, $message);

View file

@ -1,3 +1,114 @@
* 2024-01-05 11.2.4
add mode ha-status for Palo Alto
* 2023-12-16 11.2.3
add perfdata for the mode interface-nat-rejects
* 2023-12-16 11.2.2.1
fix Makefile.am and git add the cisco and arista pm files which i had forgotten
* 2023-11-30 11.2.2
add mode interface-errdisabled (Cisco and Arista only)
* 2023-11-15 11.2.1.2
require, not use Net::Ping for F5 checks
* 2023-10-27 11.2.1.1
drecksmacoctetbinaerschlonz
* 2023-10-27 11.2.1
add mode list-arp-cache
* 2023-10-06 11.2.0.4
PR #324, detect Ivanti devices (formerly identifying themselves as Pulse Secure). Thx c-kr
* 2023-09-29 11.2.0.3
show vlans only on demand, --report short+vlan
* 2023-09-15 11.2.0.2
more runtime reduction for huawei, cpu and mem
* 2023-09-15 11.2.0.1
suppress output of empty vlans
* 2023-09-15 11.2
cache huawei entities to avoid hitting the device's snmp rate limit
cache vlan configs
* 2023-09-14 11.1
show vlans with interface-status
* 2023-07-27 11.0.1.1
C9800 fix
PR #318 from lgmu, typo in --lookup vs. --lookback
* 2023-07-27 11.0.1
support new C9800 wlan controller
* 2023-07-25 11.0
new structure suitble for epn
* 2023-07-25 10.13.1
reduce amount of data in cisco fru
* 2023-07-10 10.13.0.1
bugfix in traffic thresholds, do not use warning/critical def. thresholds
* 2023-07-10 10.13
implement traffic thresholds for interface-usage, correctly calc the less-than perfdata thresholds.
* 2023-06-12 10.12.1.8
reduce runtime for HOST-RESOURCES-MIB disk and device tables
* 2023-06-12 10.12.1.7
don't walk cefcFRUPowerSupplyGroupTable, it's unused anyway
* 2023-05-28 10.12.1.6
PR 310/311 for Fortigte HW
* 2023-05-12 10.12.1.5
bugfix in bluecat productname detection
update glplugin (another epn fix, ::pluginname, ::plugin)
* 2023-05-11 10.12.1.4
update glplugin (another epn fix)
* 2023-05-04 10.12.1.3
bugfix in Huawei Wlan Controller (just a perl warning, not serious)
these recent perl warnings appeared after i heavily used the
embedded perl feature of mod-gearman. it is much more strict than
running the plugin as a standalone process)
* 2023-05-02 10.12.1.2
bugfix in Pulse Secure (just a perl warning, not serious)
* 2023-04-21 10.12.1.1
bugfix in Huawei bgp modes (just a perl warning, not serious)
* 2023-04-20 10.12.1
add a cluster-check for cisco sdwan
* 2023-04-20 10.12
reduced runtime and amount of transferred data for bgp-related checks
* 2023-04-03 10.11.0.2
reduce runtime in Huwaei accesspoint modes
* 2023-03-29 10.11.0.1
bugfix in Huawei hardware-health. Discard temperatures of 2147483647 deg.
* 2023-03-28 10.11
improve Huawei hardware-health
* 2023-03-20 10.10
add filters to sdwan-check (name=dstip,name2=localcolor)
* 2023-03-10 10.9.1.3
bugfix in Cisco Envmon notfunctioning
* 2023-03-08 10.9.1.2
bugfix again, exists plus defined
* 2023-03-08 10.9.1.1
bugfix in CISCO-ENVMON-MIB temperature (catch "notPresent")
* 2023-02-23 10.9.1
bugfix in Checkpoint Management-Status
* 2023-02-23 10.9
bugfix in Versa Peersubsystem
prepare some cisco sdwan stuff
* 2023-02-20 10.8.0.3
tweak huawei Entity-Table snmp parameters
* 2023-02-03 10.8.0.2
force interface-vlan-count-macs to cache vlans
* 2023-02-03 10.8.0.1
fix an undef in interface-vlan-count-macs
* 2023-02-03 10.8
add mode interface-vlan-count-macs
* 2023-01-19 10.7.1
tune snmp maxreps for bgp
* 2023-01-19 10.7
rewrite detection of Juniper
* 2023-01-11 10.6.1
pull request 304 improves ios hardware checks (thanks dhoffend)
* 2023-01-10 10.6
add support for Viptela
* 2022-12-16 10.5.1
bugfix in Cisco WLC, skip unused mobile stations
* 2022-10-09 10.5
add a temporary check for Cisco Viptela SDWAN (not for public use yet, sorry)
* 2022-10-08 10.4
add Huawei wlan controller (not finished yet)
* 2022-10-08 10.3.0.3
improve arista power supply/cord status checks
* 2022-09-27 10.3.0.2
fix an uninitialized value in Arista HW check
* 2022-09-20 10.3.0.1
fix issue #231, thanks log1-c
* 2022-07-29 10.3
add mode check-rtt (cisco-rttmon-mib slas)
* 2022-07-21 10.2.1

View file

@ -22,14 +22,14 @@ eval {
$Data::Dumper::Sparseseen = 1;
};
our $AUTOLOAD;
*VERSION = \'5.1.1';
*VERSION = \'5.18';
use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 };
{
our $mode = undef;
our $plugin = undef;
our $pluginname = basename($ENV{'NAGIOS_PLUGIN'} || $0);
our $pluginname = undef;
our $blacklist = undef;
our $info = [];
our $extendedinfo = [];
@ -48,6 +48,8 @@ sub new {
if ! grep /BEGIN/, keys %Monitoring::GLPlugin::Item::;
require Monitoring::GLPlugin::TableItem
if ! grep /BEGIN/, keys %Monitoring::GLPlugin::TableItem::;
$params{plugin} ||= basename($ENV{'NAGIOS_PLUGIN'} || $0);
$Monitoring::GLPlugin::pluginname = $params{plugin};
$Monitoring::GLPlugin::plugin = Monitoring::GLPlugin::Commandline->new(%params);
return $self;
}
@ -1062,6 +1064,25 @@ sub get_level {
return $code;
}
sub worst_level {
my ($self, @levels) = @_;
my $level = 0;
foreach (@levels) {
if ($_ == 2) {
$level = 2;
} elsif ($_ == 1) {
if ($level == 0 || $level == 3) {
$level = 1;
}
} elsif ($_ == 3) {
if ($level == 0) {
$level = 3;
}
}
}
return $level;
}
#########################################################
# blacklisting
#
@ -1089,6 +1110,7 @@ sub is_blacklisted {
}
# FAN:459,203/TEMP:102229/ENVSUBSYSTEM
# FAN_459,FAN_203,TEMP_102229,ENVSUBSYSTEM
# ALERT:(The Storage Center is not able to access Tiebreaker)/TEMP:102229
if ($self->opts->blacklist =~ /_/) {
foreach my $bl_item (split(/,/, $self->opts->blacklist)) {
if ($bl_item eq $self->internal_name()) {
@ -1105,6 +1127,14 @@ sub is_blacklisted {
$self->{blacklisted} = 1;
}
}
} elsif ($bl_items =~ /^(\w+):\((.*)\)$/ and $self->can("internal_content")) {
my $bl_type = $1;
my $bl_pattern = qr/$2/;
if ($self->internal_name() =~ /^${bl_type}_/) {
if ($self->internal_content() =~ /$bl_pattern/) {
$self->{blacklisted} = 1;
}
}
} elsif ($bl_items =~ /^(\w+)$/) {
if ($bl_items eq $self->internal_name()) {
$self->{blacklisted} = 1;
@ -1727,7 +1757,7 @@ sub AUTOLOAD {
$self->{components}->{$subsystem}->check();
$self->{components}->{$subsystem}->dump()
if $self->opts->verbose >= 2;
} elsif ($AUTOLOAD =~ /^.*::(status_code|check_messages|nagios_exit|html_string|perfdata_string|selected_perfdata|check_thresholds|get_thresholds|opts|pandora_string|strequal)$/) {
} elsif ($AUTOLOAD =~ /^.*::(status_code|check_messages|nagios_exit|html_string|perfdata_string|selected_perfdata|check_thresholds|get_thresholds|mod_threshold|opts|pandora_string|strequal)$/) {
return $Monitoring::GLPlugin::plugin->$1(@params);
} elsif ($AUTOLOAD =~ /^.*::(reduce_messages|reduce_messages_short|clear_messages|suppress_messages|add_html|add_perfdata|override_opt|create_opt|set_thresholds|force_thresholds|add_pandora)$/) {
$Monitoring::GLPlugin::plugin->$1(@params);

View file

@ -36,9 +36,9 @@ sub new {
$self->{$_} = $params{$_};
}
bless $self, $class;
$self->{plugin} ||= $Monitoring::GLPlugin::pluginname;
$self->{name} = $self->{plugin};
$Monitoring::GLPlugin::plugin = $self;
$self
}
sub AUTOLOAD {
@ -599,6 +599,34 @@ sub check_thresholds {
return $level;
}
sub mod_threshold {
# this method can be used to modify/multiply thresholds or upper and lower
# limit of a threshold range. For example, we have thresholds for an
# interface usage together with the maximum bandwidth and want to
# create thresholds for bitrates.
my ($self, $threshold, $func) = @_;
if (! $threshold) {
return "";
} elsif ($threshold =~ /^([-+]?[0-9]*\.?[0-9]+)$/) {
# 10
return &{$func}($1);
} elsif ($threshold =~ /^([-+]?[0-9]*\.?[0-9]+):$/) {
# 10:
return &{$func}($1).":";
} elsif ($threshold =~ /^~:([-+]?[0-9]*\.?[0-9]+)$/) {
# ~:10
return "~:".&{$func}($1);
} elsif ($threshold =~ /^([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# 10:20
return &{$func}($1).":".&{$func}($2);
} elsif ($threshold =~ /^@([-+]?[0-9]*\.?[0-9]+):([-+]?[0-9]*\.?[0-9]+)$/) {
# @10:20
return "@".&{$func}($1).":".&{$func}($2);
} else {
return $threshold."scheise";
}
}
sub strequal {
my($self, $str1, $str2) = @_;
return 1 if ! defined $str1 && ! defined $str2;

View file

@ -4,7 +4,7 @@ use File::Basename;
use Getopt::Long qw(:config no_ignore_case bundling);
# Standard defaults
my %DEFAULT = (
our %DEFAULT = (
timeout => 15,
verbose => 0,
license =>
@ -13,7 +13,7 @@ It may be used, redistributed and/or modified under the terms of the GNU
General Public Licence (see http://www.fsf.org/licensing/licenses/gpl.txt).",
);
# Standard arguments
my @ARGS = ({
our @ARGS = ({
spec => 'usage|?',
help => "-?, --usage\n Print usage information",
}, {
@ -36,7 +36,7 @@ my @ARGS = ({
},
);
# Standard arguments we traditionally display last in the help output
my %DEFER_ARGS = map { $_ => 1 } qw(timeout verbose);
our %DEFER_ARGS = map { $_ => 1 } qw(timeout verbose);
sub _init {
my ($self, %params) = @_;
@ -45,7 +45,7 @@ sub _init {
usage => 1,
version => 0,
url => 0,
plugin => { default => $Monitoring::GLPlugin::pluginname },
plugin => undef,
blurb => 0,
extra => 0,
'extra-opts' => 0,
@ -64,9 +64,8 @@ sub _init {
if ref ($self->{_attr}->{$_}) eq 'HASH' &&
exists $self->{_attr}->{$_}->{default};
}
chomp $self->{_attr}->{$_} if exists $self->{_attr}->{$_};
}
# Chomp _attr values
chomp foreach values %{$self->{_attr}};
# Setup initial args list
$self->{_args} = [ grep { exists $_->{spec} } @ARGS ];

View file

@ -393,7 +393,7 @@ sub init {
push(@credentials, "-l authPriv");
} elsif (grep(/-A/, @credentials)) {
push(@credentials, "-l authNoPriv");
} else {
} elsif (! grep(/-c/, @credentials)) {
push(@credentials, "-l noAuthNoPriv");
}
my $credentials = join(" ", @credentials);
@ -892,6 +892,27 @@ sub init {
}
}
}
} elsif ($sym =~ /Table/ and exists $Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{$mib}->{$sym =~ s/Table/Entry/gr}) {
# fuer die Pappenheimer von QNAP, die nennen ihren Krempel
# kakaTable und kakaTableEntry
# oder noch schlauer: systemIfTable und ifEntry
if (my @table = $self->get_snmp_table_objects($mib, $sym)) {
my $oid = $Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{$mib}->{$sym};
$confirmed->{$oid} = sprintf '%s::%s', $mib, $sym;
$self->add_rawdata($oid, '--------------------');
foreach my $line (@table) {
if ($line->{flat_indices}) {
foreach my $column (grep !/(flat_indices)|(indices)/, keys %{$line}) {
my $oid = $Monitoring::GLPlugin::SNMP::MibsAndOids::mibs_and_oids->{$mib}->{$column};
if (exists $unknowns->{$oid.'.'.$line->{flat_indices}}) {
$confirmed->{$oid.'.'.$line->{flat_indices}} =
sprintf '%s::%s.%s = %s', $mib, $column, $line->{flat_indices}, $line->{$column};
delete $unknowns->{$oid.'.'.$line->{flat_indices}};
}
}
}
}
}
}
}
}
@ -998,6 +1019,11 @@ sub check_snmp_and_model {
delete $response->{$oid};
}
}
# Achtung!! Der schnippelt von einem Hex-STRING, der mit 20 aufhoert,
# das letzte Byte weg. Das muss beruecksichtigt werden, wenn man
# spaeter MAC-Adressen o.ae. zueueckrechnet.
# } elsif ($self->{hwWlanRadioMac} && unpack("H12", $self->{hwWlanRadioMac}." ") =~ /(\w{2})(\w{2})(\w{2})(\w{2})(\w{2})(\w{2})/) {
# siehe Classes::Huawei::Component::WlanSubsystem::Radio
map { $response->{$_} =~ s/^\s+//; $response->{$_} =~ s/\s+$//; }
keys %$response;
$self->set_rawdata($response);
@ -1181,7 +1207,8 @@ sub establish_snmp_session {
*STDERR = *ERR;
my ($session, $error) = Net::SNMP->session(%params);
*STDERR = *SAVEERR;
if ($stderrvar && $error && $error =~ /Time synchronization failed/) {
if (($stderrvar && $error && $error =~ /Time synchronization failed/) ||
($error && $error =~ /Received usmStatsUnknownEngineIDs.0 Report-PDU with value \d+ during synchronization/)) {
# This is what you get when you have
# - an APC ups with a buggy firmware.
# - no chance to update it.
@ -1287,7 +1314,7 @@ sub establish_snmp_secondary_session {
sub reset_snmp_max_msg_size {
my ($self) = @_;
$self->debug(sprintf "reset snmp_max_msg_size to %s",
$Monitoring::GLPlugin::SNMP::max_msg_size);
$Monitoring::GLPlugin::SNMP::max_msg_size) if $Monitoring::GLPlugin::SNMP::session;
$Monitoring::GLPlugin::SNMP::session->max_msg_size($Monitoring::GLPlugin::SNMP::max_msg_size) if $Monitoring::GLPlugin::SNMP::session;
}
@ -1303,7 +1330,7 @@ sub bulk_baeh_reset {
my ($self, $maxrepetitions) = @_;
$self->reset_snmp_max_msg_size();
$Monitoring::GLPlugin::SNMP::maxrepetitions =
int($Monitoring::GLPlugin::SNMP::session->max_msg_size() * 0.017);
int($Monitoring::GLPlugin::SNMP::session->max_msg_size() * 0.017) if $Monitoring::GLPlugin::SNMP::session;
}
sub bulk_is_baeh {
@ -1337,7 +1364,11 @@ sub no_such_mode {
$self->init();
} else {
eval {
if (exists $self->{generic_class}) {
bless $self, $self->{generic_class};
} else {
bless $self, "Classes::Generic";
}
$self->init();
};
if ($@) {
@ -1646,7 +1677,15 @@ sub update_entry_cache {
$self->opts->hostname, $self->opts->mode, $mib, $table);
$self->{$cache} = {};
foreach my $entry ($self->get_snmp_table_objects($mib, $table, undef, $key_attrs)) {
my $key = join('#', map { $entry->{$_} } @{$key_attrs});
# HUAWEI-L2MAM-MIB/hwMacVlanStatisticsTable hat hwMacVlanStatisticsVlanId, welches aber nicht
# existiert. Id ist nichts anderes als der Index. sub finish() wuerde das Attribut
# anlegen, aber das ist hier noch nicht gelaufen. $entry->{$_} ist daher undef
# bei key_attrs==hwMacVlanStatisticsVlanId. Aber was noch geht:
# Leerstring, dann heißt es ""-//-index => index statt blubb-//-index => index
# Weil hwMacVlanStatisticsVlanId kein Text ist, sondern der Index, wird das Holen
# aus dem Cache funktionieren, weil wenn --name numerisch ist, wird mit dem Index
# aus ""-//-index verglichen und die leere Description ist Wurst.
my $key = join('#', map { exists $entry->{$_} ? $entry->{$_} : "" } @{$key_attrs});
my $hash = $key . '-//-' . join('.', @{$entry->{indices}});
$self->{$cache}->{$hash} = $entry->{indices};
}
@ -1745,6 +1784,47 @@ sub get_snmp_tables {
}
}
sub get_snmp_tables_cached {
my ($self, $mib, $infos, $retention) = @_;
$retention ||= 3600;
my $from_file = {};
foreach my $info (@{$infos}) {
my $table = $info->[1];
my $statefile = $self->create_entry_cache_file($mib, $table, "tablecache");
my @fileinfo = stat($statefile);
if (@fileinfo and time - $fileinfo[9] < $retention) {
# exist und recent
my $cache = sprintf "%s_%s_%s_cache", $mib, $table, "tablecache";
$self->load_cache($mib, $table, ["tablecache"]);
if (exists $self->{$cache} and defined $self->{$cache} and
((ref($self->{$cache}) eq "HASH" and keys %{$self->{$cache}}) or
(ref($self->{$cache}) eq "ARRAY" and @{$self->{$cache}}))) {
$Monitoring::GLPlugin::SNMP::tablecache->{$mib}->{$table} = $self->{$cache};
$from_file->{$cache} = 1 if exists $self->{$cache};
$self->debug(sprintf "get_snmp_tables_cached loaded file for %s %s", $mib, $table);
} else {
$self->debug(sprintf "get_snmp_tables_cached loaded empty file for %s %s", $mib, $table);
}
delete $self->{$cache} if exists $self->{$cache};
} else {
$self->debug(sprintf "get_snmp_tables_cached has no (or outdated) file for %s %s", $mib, $table);
}
}
$self->get_snmp_tables($mib, $infos);
foreach my $info (@{$infos}) {
my $table = $info->[1];
if (exists $Monitoring::GLPlugin::SNMP::tablecache->{$mib} and
exists $Monitoring::GLPlugin::SNMP::tablecache->{$mib}->{$table}) {
my $cache = sprintf "%s_%s_%s_cache", $mib, $table, "tablecache";
next if exists $from_file->{$cache};
$self->{$cache} =
$Monitoring::GLPlugin::SNMP::tablecache->{$mib}->{$table};
$self->save_cache($mib, $table, ["tablecache"]);
delete $self->{$cache};
}
}
}
sub merge_tables {
my ($self, $into, @from) = @_;
my $into_indices = {};
@ -2495,6 +2575,14 @@ sub get_table {
$params{'-maxrepetitions'});
$fallback = 1;
}
} elsif ($Monitoring::GLPlugin::SNMP::session->error() =~ /Received tooBig/i) {
# some agents can not handle big loads
if ($params{'-maxrepetitions'}) {
$params{'-maxrepetitions'} = int($params{'-maxrepetitions'} / 4) + 1;
$self->debug(sprintf "toobig reduce maxrepetitions to %d",
$params{'-maxrepetitions'});
$fallback = 1;
}
}
if ($fallback) {
$self->debug("get_table error: try fallback");
@ -3040,6 +3128,86 @@ sub get_cache_indices {
return map { join('.', ref($_) eq "ARRAY" ? @{$_} : $_) } @indices;
}
sub get_cache_indices_by_value {
# we have a table like
# [TABLEITEM_40 in dot1dBasePortTable]
# dot1dBasePort: 40 (-> index in dot1qPortVlanTable)
# dot1dBasePortCircuit: .0.0
# dot1dBasePortIfIndex: 46 -> ifIndex in ifTable
# $self->update_entry_cache(0, 'BRIDGE-MIB', 'dot1dBasePortTable', ['dot1dBasePort', "dot1dBasePortIfIndex"]);
# creates entries like
# '40#46-//-40' => [
# '40'
# ],
# get_cache_indices only works with --name
# '40#46-//-40' will be split into descr=40#46 and index=40
# descr would then be compared to --name and the value (which is [indices])
# be added to the return list. (the index 40 can also be a flat_indices)
# we can't use dot1dBasePortIfIndex as the key_attr, as it is not unique
# i ho an dot1dBasePortIfIndex und mou aussafina, wos fir index das aaf
# dem hizoing.
# zammbaut ho i dem zaech mied ['dot1dBasePort', "dot1dBasePortIfIndex"]
# also woas i das descr vo dene zammgsetzt is und da wecha wos is.
# na moue sched get_cache_indices_by_value('BRIDGE-MIB', 'dot1dBasePortTable', ['dot1dBasePort', "dot1dBasePortIfIndex"], "dot1dBasePortIfIndex", $pifidx)
# aafruafa.
# Liefert flache zruck.
my ($self, $mib, $table, $key_attr, $cmp_attr, $cmp_value) = @_;
if (ref($key_attr) ne "ARRAY") {
$key_attr = [$key_attr];
}
if (ref($cmp_value) ne "ARRAY") {
$cmp_value = [$cmp_value];
}
my $cache = sprintf "%s_%s_%s_cache",
$mib, $table, join('#', @{$key_attr});
my @indices = ();
foreach my $key (keys %{$self->{$cache}}) {
my ($descr, $index) = split('-//-', $key, 2);
# descr was join('#', map { exists $entry->{$_} ? $entry->{$_} : "" } @{$key_attrs});
my @values = split(/#/, $descr);
my %cmp = map { $key_attr->[$_] => $values[$_] } 0 .. $#values;
for my $cmp_val (@{$cmp_value}) {
if ($cmp{$cmp_attr} && $cmp{$cmp_attr} eq $cmp_val) {
push(@indices, $index);
}
}
}
return @indices;
}
sub get_cache_values_by_indices {
my ($self, $mib, $table, $key_attr, $indices) = @_;
# -> indices is an array of flat_indices
# records are
# val1#val#2#flat_index-//-flat_index => [indices]
# val1#val2 represent join(#, @key_attr)
if (ref($key_attr) ne "ARRAY") {
$key_attr = [$key_attr];
}
if (ref($indices) ne "ARRAY") {
$indices = [$indices];
}
my $cache = sprintf "%s_%s_%s_cache",
$mib, $table, join('#', @{$key_attr});
my @results = ();
foreach my $key (keys %{$self->{$cache}}) {
my ($descr, $index) = split('-//-', $key, 2);
my @values = split('#', $descr);
foreach my $flat_indices (@{$indices}) {
if ($flat_indices eq $index) {
my $element = {
flat_indices => $flat_indices,
};
foreach my $descr_idx (0 .. $#values) {
$element->{$key_attr->[$descr_idx]} = $values[$descr_idx];
}
push(@results, $element);
}
}
}
return @results;
}
sub get_entities {
my ($self, $class, $filter) = @_;
foreach ($self->get_sub_table('ENTITY-MIB', [

Some files were not shown because too many files have changed in this diff Show more