check_modem.py: represent modem state as string, check for more status codes
This commit is contained in:
parent
1f5c87cb36
commit
93757f5f1a
1 changed files with 34 additions and 18 deletions
|
|
@ -4,6 +4,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from enum import IntEnum
|
||||||
from pydbus import SystemBus
|
from pydbus import SystemBus
|
||||||
from gi.repository import GLib
|
from gi.repository import GLib
|
||||||
import sms_functions
|
import sms_functions
|
||||||
|
|
@ -28,19 +29,20 @@ import sms_functions
|
||||||
# * Enumeration of possible modem states.
|
# * Enumeration of possible modem states.
|
||||||
# */
|
# */
|
||||||
# mm_modem_state
|
# mm_modem_state
|
||||||
MM_MODEM_STATE_FAILED = -1
|
class MMModemState(IntEnum):
|
||||||
MM_MODEM_STATE_UNKNOWN = 0
|
FAILED = -1
|
||||||
MM_MODEM_STATE_INITIALIZING = 1
|
UNKNOWN = 0
|
||||||
MM_MODEM_STATE_LOCKED = 2
|
INITIALIZING = 1
|
||||||
MM_MODEM_STATE_DISABLED = 3
|
LOCKED = 2
|
||||||
MM_MODEM_STATE_DISABLING = 4
|
DISABLED = 3
|
||||||
MM_MODEM_STATE_ENABLING = 5
|
DISABLING = 4
|
||||||
MM_MODEM_STATE_ENABLED = 6
|
ENABLING = 5
|
||||||
MM_MODEM_STATE_SEARCHING = 7
|
ENABLED = 6
|
||||||
MM_MODEM_STATE_REGISTERED = 8
|
SEARCHING = 7
|
||||||
MM_MODEM_STATE_DISCONNECTING = 9
|
REGISTERED = 8
|
||||||
MM_MODEM_STATE_CONNECTING = 10
|
DISCONNECTING = 9
|
||||||
MM_MODEM_STATE_CONNECTED = 11
|
CONNECTING = 10
|
||||||
|
CONNECTED = 11
|
||||||
|
|
||||||
# Setup logging
|
# Setup logging
|
||||||
logfile = "/opt/sms/sms.log"
|
logfile = "/opt/sms/sms.log"
|
||||||
|
|
@ -49,14 +51,28 @@ logging.basicConfig(format=FORMAT,filename=logfile,level=10)
|
||||||
logger = logging.getLogger('check_modem')
|
logger = logging.getLogger('check_modem')
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
exit_code = 3 # Unknown (for Nagios)
|
||||||
|
|
||||||
modem = sms_functions.unlock_and_enable_modem()
|
modem = sms_functions.unlock_and_enable_modem()
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
modem = sms_functions.get_modem()
|
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
|
# 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:
|
if modem.GetStatus()["state"] in [ MMModemState.REGISTERED, MMModemState.CONNECTED ] and modem.SignalQuality[0] > 0 and modem.RegistrationState == 1:
|
||||||
exit(0)
|
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:
|
else:
|
||||||
exit(1)
|
print("UNKNOWN: ", end='')
|
||||||
|
exit_code = 3
|
||||||
|
|
||||||
|
print(status)
|
||||||
|
exit(exit_code)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue