#!/usr/bin/env python3 from sys import argv, exit from easysnmp import Session try: hostname = argv[1] community = argv[2] except IndexError: print('Usage: {} '.format(argv[0])) exit(3) try: session = Session(hostname=hostname, community=community, version=2) items = session.walk('iso.3.6.1.2.1.33') result = {} for item in items: result[item.oid[len('iso.3.6.1.2.1.33')+1:]] = item.value warn = set() crit = set() if int(result['1.2.2.0']): warn.add('USV is on battery!') # Estimated runtime in minutes if int(result['1.2.3.0']) < 15: crit.add('Remaining runtime is less than 15 minutes!') elif int(result['1.2.3.0']) < 25: warn.add('Remaining runtime is less than 25 minutes!') # Battery status in percent if int(result['1.2.4.0']) < 10: crit.add('Remaining runtime is less than 10%!') elif int(result['1.2.4.0']) < 25: warn.add('Remaining runtime is less than 25%!') # Output load in percent if int(result['1.4.4.1.5.1']) > 90: crit.add('Output Power is more than 90% of rated capacity!') elif int(result['1.4.4.1.5.1']) > 80: warn.add('Output Power is more than 80% of rated capacity!') print('{model} running{from_bat} at {out_pct}% load ({out_w} W), battery at {bat_pct}% ({bat_min} min)'.format( model=result['1.1.2.0'], out_pct=result['1.4.4.1.5.1'], out_w=result['1.4.4.1.4.1'], bat_pct=result['1.2.4.0'], bat_min=result['1.2.3.0'], from_bat=' from battery' if int(result['1.2.2.0']) else '', )) for line in sorted(crit): print('CRIT: ' + line) for line in sorted(warn): print('WARN: ' + line) if crit: exit(2) elif warn: exit(1) else: exit(0) except Exception as e: print(repr(e)) exit(3)