This file is indexed.

/usr/share/check_mk/checks/hp_proliant_mem is in check-mk-server 1.1.12-1ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# +------------------------------------------------------------------+
# |             ____ _               _        __  __ _  __           |
# |            / ___| |__   ___  ___| | __   |  \/  | |/ /           |
# |           | |   | '_ \ / _ \/ __| |/ /   | |\/| | ' /            |
# |           | |___| | | |  __/ (__|   <    | |  | | . \            |
# |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
# |                                                                  |
# | Copyright Mathias Kettner 2010             mk@mathias-kettner.de |
# +------------------------------------------------------------------+
#
# This file is part of Check_MK.
# The official homepage is at http://mathias-kettner.de/check_mk.
#
# check_mk is free software;  you can redistribute it and/or modify it
# under the  terms of the  GNU General Public License  as published by
# the Free Software Foundation in version 2.  check_mk is  distributed
# in the hope that it will be useful, but WITHOUT ANY WARRANTY;  with-
# out even the implied warranty of  MERCHANTABILITY  or  FITNESS FOR A
# PARTICULAR PURPOSE. See the  GNU General Public License for more de-
# ails.  You should have  received  a copy of the  GNU  General Public
# License along with GNU Make; see the file  COPYING.  If  not,  write
# to the Free Software Foundation, Inc., 51 Franklin St,  Fifth Floor,
# Boston, MA 02110-1301 USA.

# Author: Lars Michelsen <lm@mathias-kettner.de>

hp_proliant_mem_type_map = {
                1: 'other',
                2: 'board',
                3: 'cpqSingleWidthModule',
                4: 'cpqDoubleWidthModule',
                5: 'simm',
                6: 'pcmcia',
                7: 'compaq-specific',
                8: 'dimm',
                9: 'smallOutlineDimm',
                10: 'rimm',
                11: 'srimm',
                12: 'fb-dimm',
}
hp_proliant_mem_status_map = {
                1: "other",
                2: "notPresent",
                3: "present",
                4: "good",
                5: "add",
                6: "upgrade",
                7: "missing",
                8: "doesNotMatch",
                9: "notSupported",
                10: "badConfig",
                11: "degraded",
}
hp_proliant_mem_status2nagios_map = {
                'n/a': 3,
                'other': 3,
                'notPresent': 3,
                'present': 1,
                'good': 0,
                'add': 1,
                'upgrade': 1,
                'missing': 2,
                'doesNotMatch': 2,
                'notSupported': 2,
                'badConfig': 2,
                'degraded': 2,
}

hp_proliant_mem_condition_status2nagios_map = { 'other': 3, 'ok': 0, 'degraded': 2, 'failed': 2 }
hp_proliant_mem_condition_map = {
                0: 'n/a',
                1: 'other',
                2: 'ok',
                3: 'degraded',
}

def inventory_hp_proliant_mem(info):
    if len(info) > 0:
        return [ (line[1], None) for line in info if int(line[2]) > 0 and int(line[4]) != 2 ]

def check_hp_proliant_mem(item, params, info):
    for line in info:
        if line[1] == item:
            board_index, module_index, module_size, \
            module_type, module_status, module_condition = line

            module_size_mb = int(module_size) / 1024

            type = 'n/a'
            if int(module_type) in hp_proliant_mem_type_map:
                type = hp_proliant_mem_type_map[int(module_type)]

            snmp_status = 'n/a'
            if int(module_status) in hp_proliant_mem_status_map:
                snmp_status = hp_proliant_mem_status_map[int(module_status)]

            detail_output = ', Status: %s ' % snmp_status
            status = hp_proliant_mem_status2nagios_map[snmp_status]
            if status > 0:
                detail_output += '(%s) ' % nagios_state_names[status]

            condition = 'n/a'
            if int(module_condition) in hp_proliant_mem_condition_map:
                condition = hp_proliant_mem_condition_map[int(module_condition)]
            condition_status = hp_proliant_mem_condition_status2nagios_map[condition]

            detail_output += ', Condition: %s ' % condition
            if condition_status > 0:
                detail_output += '(%s) ' % nagios_state_names[condition_status]
            if condition_status > status:
                status = condition_status

            return (status, '%s - Board: %s, Num: %s, Type: %s, Size: %s MB%s' %
                            (nagios_state_names[status], board_index, module_index,
                             type, module_size_mb, detail_output))
    return (3, "UNKNOWN - item not found in snmp data")


check_info['hp_proliant_mem'] = (check_hp_proliant_mem, "HW Mem %s", 0,  inventory_hp_proliant_mem)
snmp_info['hp_proliant_mem']  = ( ".1.3.6.1.4.1.232.6.2.14.13.1", [  "2", # cpqHeResMem2BoardNum
                                                                     "1", # cpqHeResMem2Module
                                                                     "6", # cpqHeResMem2ModuleSize
                                                                     "7", # cpqHeResMem2ModuleType
                                                                     "19", # cpqHeResMem2ModuleStatus
                                                                     "20", # cpqHeResMem2ModuleCondition
                                                                ] )

snmp_scan_functions['hp_proliant_mem'] = \
    lambda oid: "proliant" in oid(".1.3.6.1.4.1.232.2.2.4.2.0").lower()