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