Ad Widget

Collapse

python hostgroup.get группировка

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dmitryIT42
    Junior Member
    • Mar 2021
    • 29

    #1

    python hostgroup.get группировка

    Добрый день. Тестирую Zabbix Api с помощью python 3.8. Там и там новичок. Опять нужна ваша помощь. Хочу получить количество узлов в группах. Использую :
    Code:
    hosts = zapi.hostgroup.get( templateids=10351,output=['name'], selectHosts= ['host'])
    for result in hosts:
        print(result)
    Получаю:
    Code:
    {'groupid': '85', 'name': 'name_group', 'hosts': [{'hostid': '10964', 'host': 'hostname1'}, {'hostid': '10965', 'host': 'hostname2'},
    {'groupid': '86', 'name': 'name_group', 'hosts': [{'hostid': '123', 'host': 'hostname1'}, {'hostid': '456', 'host': 'hostname2'},
    Подскажите пожалуйста как мне получить :
    Code:
    {'groupid': '85', 'name': 'name_group', 'hosts': [{2}],
    {'groupid': '86', 'name': 'name_group', 'hosts': [{'2}
    И желательно выгрузить в csv)
  • dmitryIT42
    Junior Member
    • Mar 2021
    • 29

    #2
    Догадался сам)
    Code:
    hosts = zapi.hostgroup.get(output=['name'], selectHosts='count')
    Теперь осталось понять как отфильтровать по шаблонам в хостах

    Подскажите пожалуйста как сделать фильтр, т.е. вывести количество хостов в группах в котором есть шаблон id=xxx
    Last edited by dmitryIT42; 02-05-2021, 00:19.

    Comment

    • klon
      Junior Member
      • May 2021
      • 1

      #3
      Не уверен, что это можно сделать одним запросом.
      Проще получить список групп:
      Code:
      groups=zapi.hostgroup.get()
      а потом пройтись циклом по этому списку и получить количество хостов в каждой группе уже по фильтру
      Code:
      for group in groups:
        hosts = zapi.host.get(groupids=[group['groupid']], templateids=['xxx'])

      Comment

      • dmitryIT42
        Junior Member
        • Mar 2021
        • 29

        #4
        Originally posted by klon
        Не уверен, что это можно сделать одним запросом.
        Проще получить список групп:
        Code:
        groups=zapi.hostgroup.get()
        а потом пройтись циклом по этому списку и получить количество хостов в каждой группе уже по фильтру
        Code:
        for group in groups:
        hosts = zapi.host.get(groupids=[group['groupid']], templateids=['xxx'])
        А как там еще вывести название группы?) Извиняюсь но гугл пока не помогает)

        Comment

        • dmitryIT42
          Junior Member
          • Mar 2021
          • 29

          #5
          Originally posted by klon
          Не уверен, что это можно сделать одним запросом.
          Проще получить список групп:
          Code:
          groups=zapi.hostgroup.get()
          а потом пройтись циклом по этому списку и получить количество хостов в каждой группе уже по фильтру
          Code:
          for group in groups:
          hosts = zapi.host.get(groupids=[group['groupid']], templateids=['xxx'])
          Всё решил спасибо)
          Code:
          print (hosts,group)

          Comment

          Working...