diff --git a/check_modem.py b/check_modem.py index cae4da8..19f9ed1 100755 --- a/check_modem.py +++ b/check_modem.py @@ -4,6 +4,7 @@ import logging import os import sys import time +from enum import IntEnum from pydbus import SystemBus from gi.repository import GLib import sms_functions @@ -28,19 +29,20 @@ import sms_functions # * Enumeration of possible modem states. # */ # mm_modem_state -MM_MODEM_STATE_FAILED = -1 -MM_MODEM_STATE_UNKNOWN = 0 -MM_MODEM_STATE_INITIALIZING = 1 -MM_MODEM_STATE_LOCKED = 2 -MM_MODEM_STATE_DISABLED = 3 -MM_MODEM_STATE_DISABLING = 4 -MM_MODEM_STATE_ENABLING = 5 -MM_MODEM_STATE_ENABLED = 6 -MM_MODEM_STATE_SEARCHING = 7 -MM_MODEM_STATE_REGISTERED = 8 -MM_MODEM_STATE_DISCONNECTING = 9 -MM_MODEM_STATE_CONNECTING = 10 -MM_MODEM_STATE_CONNECTED = 11 +class MMModemState(IntEnum): + FAILED = -1 + UNKNOWN = 0 + INITIALIZING = 1 + LOCKED = 2 + DISABLED = 3 + DISABLING = 4 + ENABLING = 5 + ENABLED = 6 + SEARCHING = 7 + REGISTERED = 8 + DISCONNECTING = 9 + CONNECTING = 10 + CONNECTED = 11 # Setup logging logfile = "/opt/sms/sms.log" @@ -49,14 +51,28 @@ logging.basicConfig(format=FORMAT,filename=logfile,level=10) logger = logging.getLogger('check_modem') if __name__ == "__main__": + exit_code = 3 # Unknown (for Nagios) + modem = sms_functions.unlock_and_enable_modem() time.sleep(2) modem = sms_functions.get_modem() - status = modem.GetStatus() - print(status) + status = modem.GetStatus() + status['state_text'] = MMModemState(status['state']).name + # return code: if registered and signal > 0, return 0 - if modem.GetStatus()["state"] in [ MM_MODEM_STATE_REGISTERED, MM_MODEM_STATE_CONNECTED ] and modem.SignalQuality[0] > 0 and modem.RegistrationState == 1: - exit(0) + if modem.GetStatus()["state"] in [ MMModemState.REGISTERED, MMModemState.CONNECTED ] and modem.SignalQuality[0] > 0 and modem.RegistrationState == 1: + print("OK: ", end='') + exit_code = 0 + elif modem.GetStatus()["state"] in [ MMModemState.INITIALIZING, MMModemState.ENABLED, MMModemState.SEARCHING, MMModemState.DISCONNECTING ]: + print("WARNING: ", end='') + exit_code = 1 + elif modem.GetStatus()["state"] in [ MMModemState.FAILED, MMModemState.LOCKED, MMModemState.DISABLED ]: + print("CRITICAL: ", end='') + exit_code = 2 else: - exit(1) + print("UNKNOWN: ", end='') + exit_code = 3 + + print(status) + exit(exit_code)