Module: check_mk
Branch: master
Commit: 8c43bacf1c7c90c63143c41b5f2a52beff867b30
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8c43bacf1c7c90…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Nov 23 20:48:21 2010 +0100
printer_supply: In case of OKI c5900 devices the name of the supply
units ins not unique. The color of the supply unit is reported in a dedicated
OID and added to the check item name to have a unique name now.
---
ChangeLog | 3 +++
checkman/printer_supply | 9 ++++-----
checks/printer_supply | 43 ++++++++++++++++++++++++++++++++++++++++---
3 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4d9241e..009e682 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -81,6 +81,9 @@
* Cleaned up several checks to meet the variable naming conventions
* drbd: Handling unconfigured drbd devices correctly. These devices are
ignored during nventory
+ * printer_supply: In case of OKI c5900 devices the name of the supply units ins not
+ unique. The color of the supply unit is reported in a dedicated OID and added to
the
+ check item name to have a unique name now.
Multisite:
* The custom open/close states of custom links are now stored for each
diff --git a/checkman/printer_supply b/checkman/printer_supply
index 2977f6c..7f3118b 100644
--- a/checkman/printer_supply
+++ b/checkman/printer_supply
@@ -13,11 +13,10 @@ description:
how much is remaining in a supply, so the printer says "some remaining".
This value produces a warning.
- Please note, that some manufactures do not have unique names for
- their supply units in the MIB. They for example name all for toner
- units {Toner Cartridge OKI DATA CORP}. In that case, only the first
- unit will be checked (which does not make much sense). A future version
- of the check might handle that problem - the current one not.
+ In case of OKI c5900 devices the name of the supply units ins not unique.
+ One example is {Toner Cartridge OKI DATA CORP}. In this case the color of
+ the supply unit is added to the beginning of the name to get a unique
+ item name.
perfdata:
The remaining filling level in units (pages remaining).
diff --git a/checks/printer_supply b/checks/printer_supply
index 5fc0f35..2c9d742 100644
--- a/checks/printer_supply
+++ b/checks/printer_supply
@@ -30,13 +30,47 @@
# | Peter Lauk <lauk(a)stuttgart-airport.com> Copyright 2010 |
# +------------------------------------------------------------------+
+# In some cases the name of the part is not uniq. e.g. for c5900
+# devices. In this cases add the color from the dedicated OID to
+# the item name.
+#
+# Example output for this case:
+#
+#['Toner Cartridge OKI DATA CORP', '100', '30', 'black']
+#['Toner Cartridge OKI DATA CORP', '100', '10', 'cyan']
+#['Toner Cartridge OKI DATA CORP', '100', '10',
'magenta']
+#['Toner Cartridge OKI DATA CORP', '100', '40',
'yellow']
+#['Image Drum Unit OKI DATA CORP', '20000', '-409', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '7969', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '11597', '']
+#['Image Drum Unit OKI DATA CORP', '20000', '4621', '']
+#['Belt Unit OKI DATA CORP', '60000', '47371', '']
+#['Fuser Unit OKI DATA CORP', '60000', '26174', '']
+#['Waste Toner box OKI DATA CORP', '1', '-2', '']
+
printer_supply_default_levels = (20, 10)
+# Workaround for toners and drum units in c5900 devices
+# which have equal names for the single parts.
+# Add the color description to that item
+def printer_supply_fix_infos(info):
+ colors = []
+ for index, line in enumerate(info):
+ if line[0].startswith('Toner Cartridge') \
+ or line[0].startswith('Image Drum Unit'):
+ if line[3]:
+ colors += [ line[3] ]
+ color = line[3]
+ elif line[3] == '':
+ color = colors[index - len(colors)]
+ info[index][0] = '%s %s' % (color.title(), line[0])
+ return info
+
def inventory_printer_supply(checkname, info):
- return [ (line[0], "printer_supply_default_levels") for line in info ]
+ return [ (line[0], "printer_supply_default_levels") for line in
printer_supply_fix_infos(info) ]
def check_printer_supply(item, params, info):
- for line in info:
+ for line in printer_supply_fix_infos(info):
if line[0] == item:
maxlevel = float(line[1])
current = float(line[2])
@@ -61,7 +95,10 @@ def check_printer_supply(item, params, info):
check_info['printer_supply'] = (check_printer_supply, "Supply %s", 1,
inventory_printer_supply)
-snmp_info['printer_supply'] = ( ".1.3.6.1.2.1.43.11.1.1", [ 6, 8, 9 ]
)
+snmp_info['printer_supply'] = ( ".1.3.6.1.2.1.43", [
'11.1.1.6',
+ '11.1.1.8',
+ '11.1.1.9',
+ '12.1.1.4' ] )
snmp_scan_functions['printer_supply'] = \
lambda oid: not not oid(".1.3.6.1.2.1.43.11.1.1.6.1.1")