From 8691f697da385e7d129c2cbc2a5592a103fbea90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20M=E4kinen?= Date: Wed, 22 Dec 2010 14:24:27 +0200 Subject: [PATCH] Fixed HEX-STRING parsing and invalid supply status from printer-details.py script. --- cups/files/printer-details.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/cups/files/printer-details.py b/cups/files/printer-details.py index 323303b..b2a425c 100755 --- a/cups/files/printer-details.py +++ b/cups/files/printer-details.py @@ -132,11 +132,15 @@ def getdata(name, addr, templates): baseoid + '.6.1'), snmpdata.keys())) data += '\n' for k in keys: + try: + value = ' %s\n' % getstatus(snmpdata['%s.9.1.%s' % (baseoid, k)], + snmpdata['%s.8.1.%s' % (baseoid, k)]) + except KeyError: + continue data += '\n' data += ' \n' % ( snmpdata[baseoid + '.6.1.' + k]) - data += ' %s\n' % getstatus(snmpdata['%s.9.1.%s' % (baseoid, k)], - snmpdata['%s.8.1.%s' % (baseoid, k)]) + data += value data += '\n' data += '
%s:
\n' data += '\n' @@ -244,7 +248,7 @@ def readtemplate(name, *args, **kwargs): ## snmp functions def snmpget(community, hostname, *args): - cmdline = [ 'snmpget', '-On', '-v', '1', '-c', community, hostname ] + cmdline = [ 'snmpget', '-Ona', '-v', '1', '-c', community, hostname ] for o in args: cmdline.append(o) ret = {} @@ -257,13 +261,21 @@ def snmpget(community, hostname, *args): def snmpwalk(community, hostname, oid): - cmdline = [ 'snmpwalk', '-On', '-v', '1', '-c', community, hostname, oid ] + cmdline = [ 'snmpwalk', '-Ona', '-v', '1', '-c', community, hostname, oid ] ret = {} cmd = Popen(cmdline, stdout=PIPE, stderr=PIPE, close_fds=True) + buff = '' for line in cmd.stdout.readlines(): - line = snmpparse(line) - if line is not None: - ret[line[0]] = line[1] + if re.search('[\.0-9]* = .*', line): + buff = snmpparse(buff) + if buff is not None: + ret[buff[0]] = buff[1] + buff = line.strip() + else: + buff += line.strip() + buff = snmpparse(buff) + if buff is not None: + ret[buff[0]] = buff[1] return ret