Ad Widget

Collapse

ZabbixAPI Get host by IP(Получить хост по привязанному к нему IP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • alp
    Member
    • Nov 2009
    • 90

    #1

    ZabbixAPI Get host by IP(Получить хост по привязанному к нему IP

    Приветствую.

    Для упрощения рабочего процесса решил вспомнить ZabbixAPI. Решил написать простенькие консольные тулзы для быстрого получения данных по хосту. Тулзе отдаётся IP или домен, а на выходе вся инфа по хосту.

    Получить хост по домену оказалось довольно просто:
    Code:
    def get_host_by_domain(domain):
    	host = zapi.host.get(
        { "output": "extend",
          "filter": {"host": [domain]},
          "selectInterfaces": "extend"})
    	#print host[0]
    	interface = zapi.hostinterface.get({
    	        "output": "extend",
    	        "hostids": host[0]['hostid'],
            })	
    	print "==============================="
    	print "Host:		", 	host[0]['host']
    	print "Host-ID:	", 		host[0]['hostid']
    	print "Host IP:	",		interface[0]['ip']
    А вот получить хост по IP, с ходу не удалось. В первой версии заббикса можно было задать фильтр по IP. Во второй же версии интерфейсы вынесены в отдельную сущность и нужно делать вложенные форы или что-то подобное. Чего бы хотелось избежать в пользу каких-то более или менее штатных средств.

    Если таковые имеются, буду благодарен за подсказку.
  • alp
    Member
    • Nov 2009
    • 90

    #2
    Решил таким образом:

    Code:
    def get_host_by_ip(ip):
            interface = zapi.hostinterface.get(
            {       "output": "extend",
                    "sortfield": "interfaceid" })
            for i in interface:
                    if i['ip'] == ip: # If we found ip
                            if i['dns']:
                                    print i['dns']
                            else:
                                    host = zapi.host.get(
                                            {"output": "extend",
                                             "hostids": i['hostid'] })[0]
                                    print host['host']
    
    def get_host_by_domain(domain):
            host = zapi.host.get(
        {   "output": "extend",
            "filter": {"host": [domain]},
            "selectInterfaces": "extend"})[0]
            interface = zapi.hostinterface.get(
            {   "output": "extend",
                "hostids": host['hostid'] })
            print "==============================="
            print "Host:            ",      host['host']
            print "Host-ID: ",              host['hostid']
            print "Host IP: ",              interface[0]['ip']
    
    
    # if argument is domain or ip
    p = re.compile('[a-z]+')
    if p.match(argument):
            #print "It's DOMAIN"
            get_host_by_domain(argument)
    else:
            #print "It's IP"
            get_host_by_ip(argument)

    Comment

    Working...