UserParameter=host.relocate,/etc/zabbix/bin/zabbixapi.py > /dev/null 2>&1 ;echo $?
#!/usr/bin/env python import urllib, json, httplib, socket, sys, os def httpRequest(request): body = json.dumps(request) headers = {"Content-type": "application/json"} conn = httplib.HTTPConnection("zabbix.example.com", 80) conn.request("POST", "/api_jsonrpc.php", body, headers) response = conn.getresponse() data = response.read() conn.close() return data me = os.popen('facter --puppet fqdn').read().strip('\n') # authToken = httpRequest({"jsonrpc": "2.0","method":"user.authenticate","params":{"user":"API_USER","password":"API_PASSWORD"},"auth": None,"id":0}) authToken = json.loads(authToken).get('result', None) # , Autoregistered hostInGroup = httpRequest({"jsonrpc":"2.0","method":"host.get","params":{"output":"extend","filter":{"host":me}, "groupids":"21"},"auth":authToken,"id":1}) hostInGroup = json.loads(hostInGroup).get('result', None) if hostInGroup: hostID = httpRequest({"jsonrpc":"2.0","method":"host.get","params":{"output":"extend","filter":{"host":me}, "groupids":"21"},"auth":authToken,"id":2}) hostID = json.loads(hostID) hostID = hostID['result'][0]['hostid'] print "Host is in AutoRegistered Group" print "HostID is",hostID print "We need to update host info, link templates and move host to proper group" # facter , print "Collecitng host info..." osFamily = os.popen('facter --puppet kernel').read().strip('\n') virtualEnv = os.popen('facter --puppet virtual').read().strip('\n') print "Base OS is",osFamily if osFamily == "FreeBSD": hostGroups = [{"groupid":"11"}, {"groupid":"6"}] hostTemplates = [{"templateid":"10077"}, {"templateid":"10090"}] if osFamily == "Linux": print "Checking virtualization..." if virtualEnv == "physical": print "Physical host detected, no virtualization" hostGroups = [{"groupid":"11"}, {"groupid":"2"}] hostTemplates = [{"templateid":"10076"}, {"templateid":"10090"}, {"templateid":"10127"}] if virtualEnv == "openvzve" or virtualEnv == "openvz": print "OpenVZ virtualization detected" hostGroups = [{"groupid":"11"}, {"groupid":"14"}] hostTemplates = [{"templateid":"10117"}, {"templateid":"10090"}] print "Detected groups are", hostGroups print "Detected templates are", hostTemplates updateHost = { "jsonrpc":"2.0", "method":"host.update", "params":{ "hostid":hostID, "ip":"127.0.0.1", "groups":hostGroups, "templates":hostTemplates, "templates_clear":"10263" }, "auth":authToken, "id":3 } print "Trying to update host..." httpRequest(updateHost) hostInterfaceID = httpRequest({"jsonrpc":"2.0","method":"hostinterface.get","params":{"output":"extend", "hostids":hostID},"auth":authToken,"id":4}) hostInterfaceID = json.loads(hostInterfaceID) hostInterfaceID = hostInterfaceID['result'][0]['interfaceid'] print "Host Interface ID detected as", hostInterfaceID updateHostInterface = { "jsonrpc":"2.0", "method":"hostinterface.update", "params":{ "interfaceid":hostInterfaceID, "dns": me, "useip": 0 }, "auth":authToken, "id":4 } print "Trying to update host interface to DNS based..." httpRequest(updateHostInterface) sys.exit(0) else: print "Host is absent in AutoRegistered Group" print "Nothing to do..." sys.exit(0)
Source: https://habr.com/ru/post/211384/
All Articles