12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/bin/python3
- #
- import argparse
- import nagios
- import subprocess
-
- """
- Bit Hex Value Meaning
- 0 1 Under-voltage detected
- 1 2 ARM frequency has been caped
- 2 4 Currently throttled
- 3 8 Soft temperature limit is active
- 16 1000 Under-voltage has occurred
- 17 2000 ARM frequency capping has occurred
- 18 4000 Throttling has occurred
- 19 8000 Soft temperature limit has occurred
-
- Bit16+ are resetted with a reboot (only)
- """
-
- if __name__ == "__main__":
- throttled = subprocess.check_output(['vcgencmd', 'get_throttled']).decode('utf-8')
- try:
- tval = throttled[throttled.index('=')+1:]
- tval = int(tval, 16)
- except ValueError:
- tval = None
- else:
- tval &= 0x3fff # remove the values which are only resetted with a reboot
- #
- n = nagios.Nagios()
- #
- if tval is None:
- status = n.UNKNOWN
- elif tval & 0x1 != 0:
- status = n.ERROR
- else:
- status = n.OK
- #
- n.exit(status, f"Undervoltage state ({throttled})")
|