Module: check_mk
Branch: master
Commit: ce56e57b1d23bab49d02a33c5941e175a535eb6a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ce56e57b1d23ba…
Author: Bernd Stroessenreuther <bs(a)mathias-kettner.de>
Date: Thu Nov 21 13:26:55 2013 +0100
FIX stored snmpwalks now get correct encoding of binary values
In stored snmpwalks up to now binary values were stored in their binary
representation which caused problems when reading them. Now they are
stored in their ASCII representation.
Furthermore for producing stored walks the inline snmp is never used.
Storedwalks are allways created by the command line tools no regard what
the Global Setting is set to.
---
.werks/81 | 14 ++++++++++++++
ChangeLog | 1 +
modules/check_mk.py | 5 +----
modules/snmp.py | 10 +++++-----
4 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/.werks/81 b/.werks/81
new file mode 100644
index 0000000..78126a5
--- /dev/null
+++ b/.werks/81
@@ -0,0 +1,14 @@
+Title: stored snmpwalks now get correct encoding of binary values
+Level: 2
+Component: checks
+Version: 1.2.3i7
+Date: 1385036527
+Class: fix
+
+In stored snmpwalks up to now binary values were stored in their binary
+representation which caused problems when reading them. Now they are
+stored in their ASCII representation.
+
+Furthermore for producing stored walks the inline snmp is never used.
+Storedwalks are allways created by the command line tools no regard what
+the Global Setting is set to.
diff --git a/ChangeLog b/ChangeLog
index 2c3230a..60bc479 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,6 +26,7 @@
* 0209 FIX: Cleaned up bad code in fileinfo.groups check
* 0003 FIX: ps: Remove exceeding [ and ] in service description when using process
inventory...
* 0037 FIX: checkman: alcatel power - now with correct classification...
+ * 0081 FIX: stored snmpwalks now get correct encoding of binary values...
Multisite:
* 0001 New filters for selecting several host/service-groups at once...
diff --git a/modules/check_mk.py b/modules/check_mk.py
index a1cefa8..019b829 100755
--- a/modules/check_mk.py
+++ b/modules/check_mk.py
@@ -4142,10 +4142,7 @@ def do_snmpwalk_on(hostname, filename):
sys.stdout.write("Walk on \"%s\"..." % oid)
sys.stdout.flush()
- if has_inline_snmp and use_inline_snmp:
- results = inline_snmpwalk_on_suboid(hostname, oid, strip_values = False)
- else:
- results = snmpwalk_on_suboid(hostname, ip, oid)
+ results = snmpwalk_on_suboid(hostname, ip, oid, hex_plain = True)
for oid, value in results:
out.write("%s %s\n" % (oid, value))
diff --git a/modules/snmp.py b/modules/snmp.py
index b46d048..5f3a5f7 100644
--- a/modules/snmp.py
+++ b/modules/snmp.py
@@ -30,16 +30,16 @@ OID_END = 0
OID_STRING = -1
OID_BIN = -2
-def strip_snmp_value(value):
+def strip_snmp_value(value, hex_plain = False):
v = value.strip()
if v.startswith('"'):
v = v[1:-1]
if len(v) > 2 and is_hex_string(v):
- return convert_from_hex(v)
+ return not hex_plain and convert_from_hex(v) or value
else:
return v.strip()
else:
- return v.strip()
+ return v
def is_hex_string(value):
# as far as I remember, snmpwalk puts a trailing space within
@@ -398,7 +398,7 @@ def snmp_decode_string(text):
# | Non-inline SNMP handling code. Kept for compatibility. |
# '----------------------------------------------------------------------'
-def snmpwalk_on_suboid(hostname, ip, oid):
+def snmpwalk_on_suboid(hostname, ip, oid, hex_plain = False):
portspec = snmp_port_spec(hostname)
command = snmp_walk_command(hostname) + \
" -OQ -OU -On -Ot %s%s %s" % (ip, portspec, oid)
@@ -433,7 +433,7 @@ def snmpwalk_on_suboid(hostname, ip, oid):
value += " " + nextline
if value[-1] == '"':
break
- rowinfo.append((oid, strip_snmp_value(value)))
+ rowinfo.append((oid, strip_snmp_value(value, hex_plain)))
except StopIteration:
pass