#!/usr/bin/env python # -*- encoding: utf-8; py-indent-offset: 4 -*- # +------------------------------------------------------------------+ # | ____ _ _ __ __ _ __ | # | / ___| |__ ___ ___| | __ | \/ | |/ / | # | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / | # | | |___| | | | __/ (__| < | | | | . \ | # | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ | # | | # | Copyright Mathias Kettner 2014 mk@mathias-kettner.de | # +------------------------------------------------------------------+ # # This file is part of Check_MK. # The official homepage is at http://mathias-kettner.de/check_mk. # # check_mk is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation in version 2. check_mk is distributed # in the hope that it will be useful, but WITHOUT ANY WARRANTY; with- # out even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more de- # tails. You should have received a copy of the GNU General Public # License along with GNU Make; see the file COPYING. If not, write # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA. import sys from urllib2 import urlopen import urllib2, base64, json import ssl try: ip = sys.argv[1] user = sys.argv[2] password = sys.argv[3] except: print "Usage: agent_hivemanager " sys.exit(2) def get_url(address): request = urllib2.Request(address) base64string = base64.encodestring('%s:%s' % (user, password)).replace('\n', '') request.add_header("Authorization", "Basic %s" % base64string) request.add_header("Content-Type", "application/json") ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE try: return urllib2.urlopen(request,context=ctx) except urllib2.HTTPError, e: print e sys.exit(2) print "<<>>" print "Version: 1.2.5" print "AgentOS: Hivemanager" print "<<>>" address = "https://%s/hm/api/v1/devices" % ip informations = ['hostName', 'clients', 'alarm', 'connection', 'upTime', 'eth0LLDPPort', 'eth0LLDPSysName', 'hive', 'hiveOS', 'hwmodel' 'serialNumber', 'nodeId', 'location', 'networkPolicy' ] for line in json.loads(get_url(address).read()): if line['upTime'] == '': line['upTime'] = "down" print "|".join(map(str, [ "%s::%s" % (x, y) for x,y in line.items() if x in informations ]))