Nagios Plugins
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/python3
  2. #
  3. import argparse
  4. import json
  5. import nagios
  6. import os
  7. import urllib.request
  8. CHECKS = ['wifi']
  9. #
  10. WIFI_QUALITY_ERROR = -30
  11. WIFI_QUALITY_WARNING = -50
  12. if __name__ == "__main__":
  13. parser = argparse.ArgumentParser(
  14. prog=os.path.basename(__file__),
  15. description='Check shelly for nagios monitorin',
  16. # epilog='Text at the bottom of help'
  17. )
  18. parser.add_argument('-H', '--hostname', required=True)
  19. parser.add_argument('-c', '--check', choices=CHECKS, required=True)
  20. args = parser.parse_args()
  21. #
  22. n = nagios.Nagios()
  23. status = n.UNKNOWN
  24. #
  25. with urllib.request.urlopen(f"http://{args.hostname}/status") as response:
  26. data = json.load(response)
  27. #
  28. #
  29. if args.check == 'wifi':
  30. connected = data['wifi_sta']['connected']
  31. quality = data['wifi_sta']['rssi']
  32. if not connected or quality > WIFI_QUALITY_ERROR:
  33. status = n.ERROR
  34. elif quality > WIFI_QUALITY_WARNING:
  35. status = n.WARNING
  36. else:
  37. status = n.OK
  38. n.exit(status, f"connected: {connected} - quality: {quality}")