Ad Widget

Collapse

Вопрос по API Python

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Odil_tal
    Member
    • Jul 2016
    • 60

    #1

    Вопрос по API Python

    Всем добрый день!
    Задача: Необходимо через Python получить дату последней отправки данных компьютеров на сервер Zabbix.
    Решение: t= z.history.get(hostids=11740, itemids=112848 , limit=1)
    print (t)

    Выводится:
    [{'itemid': '112837', 'clock': '1519966042', 'value': '0', 'ns': '578510581'}]
    Тип элемента данных - Числовой (целое положительное).

    Проблема 1 Не знаю, как вытащить только дату.
    Если добавить для проверки вручную:
    import datetime
    print(
    datetime.datetime.fromtimestamp(
    int("1519966042")
    ).strftime('%Y-%m-%d %H:%M:%S')
    )

    то выходит: 2018-03-02 09:47:22, т.е. это не последняя информация, а скорее первая.
    Проблема 2 Вместо itemids=112848, необходимо выбирать имя элемента данных. Тоже незнаю как.
    Возможно я выбрал сложный путь. Может есть более лёгкий путь вывода информации о последнем появлении в сети компьютеров.
  • Odil_tal
    Member
    • Jul 2016
    • 60

    #2
    Неужели ни у кого нет идеи?

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #3
      Я не силён в Python-е, но сдаётся мне, что по первому пункту:
      • не уверен, учитывается ли при преобразованиях unixtime -> string Ваш часовой пояс (не отображает ли он время по Гринвичу?);
      • в методе history.get() API позволяет задавать параметры сортировки (собственно, по ссылке в примере это есть).
      Last edited by Kos; 29-03-2018, 08:48.

      Comment

      • Odil_tal
        Member
        • Jul 2016
        • 60

        #4
        Всё. Разобрался. Держите код. Может кому-нибудь пригодится.
        for host in hosts:
        # print (host['hostid'],host['name'])
        # Get all items for host
        for z1 in z.item.get(hostids=host['hostid']):
        # print (z['itemid'], z['hostid'], z['key_'], z['name'])
        if z1['name'] == 'WoW':
        n=z1['itemid']
        n1=z1['hostid']
        n2=host['name']
        it=z.history.get(hostids=n1, itemids=n, sortfield="clock", sortorder="DESC", limit=1)
        lst =it[0]
        c1=(lst['clock'])
        print (n2)
        import datetime
        print(
        datetime.datetime.fromtimestamp(
        int(c1)
        ).strftime('%Y-%m-%d %H:%M:%S')
        )

        Last edited by Odil_tal; 29-03-2018, 09:38.

        Comment

        Working...