fetchping.py 1.1 KB

12345678910111213141516171819202122232425262728
  1. from django.core.management.base import BaseCommand
  2. import socket, csv
  3. from pytz import timezone
  4. from datetime import datetime
  5. from collections import namedtuple
  6. from itertools import groupby
  7. from services.models import IPResource
  8. from djadhere.utils import from_livestatus
  9. class Command(BaseCommand):
  10. help = 'Récupération du dernier ping depuis check_mk'
  11. def handle(self, *args, **options):
  12. paris = timezone('Europe/Paris')
  13. hosts = from_livestatus('hosts', columns=['name', 'address', 'last_check', 'last_time_up'])
  14. data = {}
  15. # quelques IP sont listées curieusement plusieurs fois, on prend la première occurence
  16. for address, group in groupby(sorted(hosts, key=lambda host: host.address), lambda host: host.address):
  17. last_check = last_time_up = 0
  18. host = next(group)
  19. IPResource.objects.filter(ip=address).update(
  20. checkmk_label=host.name,
  21. last_check=paris.localize(datetime.fromtimestamp(int(host.last_check))),
  22. last_time_up=paris.localize(datetime.fromtimestamp(int(host.last_time_up))),
  23. )