Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit efa2f664 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent bde8a5d5
No related branches found
No related tags found
No related merge requests found
No preview for this file type
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
# Date : 2022-10-04 # Date : 2022-10-04
# File : checks/active_checks_ntp # File : checks/active_checks_ntp
# #
# # 2022-11-15: changed to use short options, doesn't work with long options
def check_ntp_arguments(params): def check_ntp_arguments(params):
args = [] args = []
...@@ -21,30 +21,30 @@ def check_ntp_arguments(params): ...@@ -21,30 +21,30 @@ def check_ntp_arguments(params):
args.append(f'-t {params["timeout"]}') args.append(f'-t {params["timeout"]}')
if 'server' in params: if 'server' in params:
args.append(f'-s {params["server"]}') args.append(f'-H {params["server"]}')
else: else:
args.append('-s $HOSTADDRESS$') args.append('-H $HOSTADDRESS$')
if 'version' in params: if 'version' in params:
args.append(f'-v {params["version"]}') args.append(f'-V {params["version"]}')
if 'state_not_synchronized' in params:
args.append(f'--state_not_synchronized {params["state_not_synchronized"]}')
if 'offset_levels' in params: if 'offset_levels' in params:
args.append(f'--offset{params["offset_levels"][0]},{params["offset_levels"][1]}') args.append(f'-o {params["offset_levels"][0]},{params["offset_levels"][1]}')
if 'stratum_levels' in params: if 'stratum_levels' in params:
args.append(f'--stratum {params["stratum_levels"][0]},{params["stratum_levels"][1]}') args.append(f'-s {params["stratum_levels"][0]},{params["stratum_levels"][1]}')
if 'dispersion_levels' in params: if 'dispersion_levels' in params:
args.append(f'--dispersion {params["dispersion_levels"][0]},{params["dispersion_levels"][1]}') args.append(f'-D {params["dispersion_levels"][0]},{params["dispersion_levels"][1]}')
if 'delay_levels' in params: if 'delay_levels' in params:
args.append(f'--delay {params["dispersion_levels"][0]},{params["dispersion_levels"][1]}') args.append(f'-d {params["dispersion_levels"][0]},{params["dispersion_levels"][1]}')
if 'state_not_synchronized' in params:
args.append(f'-n {params["state_not_synchronized"]}')
if 'state_no_response' in params: if 'state_no_response' in params:
args.append(f'--state_no_response {params["state_no_response"]}') args.append(f'-r {params["state_no_response"]}')
return args return args
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
# #
# 2022-10-13: added exception handling for ntp request # 2022-10-13: added exception handling for ntp request
# 2022-11-14: made state on no response configurable # 2022-11-14: made state on no response configurable
# # 2022-11-15: added short options
from typing import Optional, Sequence, Tuple from typing import Optional, Sequence, Tuple
from ipaddress import IPv4Address from ipaddress import IPv4Address
...@@ -130,6 +130,7 @@ def _ntp_decode_ref_id(stratum: int, ref_id: int): ...@@ -130,6 +130,7 @@ def _ntp_decode_ref_id(stratum: int, ref_id: int):
def parse_arguments(argv: Sequence[str]) -> argparse.Namespace: def parse_arguments(argv: Sequence[str]) -> argparse.Namespace:
def _warn_crit(arg: str) -> Optional[Tuple[int, int]]: def _warn_crit(arg: str) -> Optional[Tuple[int, int]]:
arg = arg.strip('(').strip(')').split(',') arg = arg.strip('(').strip(')').split(',')
warn, crit = arg warn, crit = arg
...@@ -146,39 +147,38 @@ def parse_arguments(argv: Sequence[str]) -> argparse.Namespace: ...@@ -146,39 +147,38 @@ def parse_arguments(argv: Sequence[str]) -> argparse.Namespace:
'To use this check plugin you need to install the python "ntplib" in your CMK python environment.' 'To use this check plugin you need to install the python "ntplib" in your CMK python environment.'
) )
parser.add_argument( parser.add_argument(
'--server', '-s', required=True, '-H', '--host', required=True,
help='Host to query (required)') help='Host to query (required)')
parser.add_argument( parser.add_argument(
'--port', '-p', type=int, default=123, '-p', '--port', type=int, default=123,
help='UDP port to use.') help='UDP port to use.')
parser.add_argument( parser.add_argument(
'--timeout', '-t', type=int, default=2, '-t', '--timeout', type=int, default=2,
help='Request timeout in seconds.') help='Request timeout in seconds.')
parser.add_argument( parser.add_argument(
'--version', '-v', type=int, default=4, choices=[1, 2, 3, 4], '-V', '--version', type=int, default=4, choices=[1, 2, 3, 4],
help='NTP version to use.') help='NTP version to use.')
parser.add_argument( parser.add_argument(
'--state_not_synchronized', type=int, default=2, choices=[0, 1, 2, 3], '-n', '--state_not_synchronized', type=int, default=2, choices=[0, 1, 2, 3],
help='Monitoring state if not synchronized.') help='Monitoring state if not synchronized.')
parser.add_argument( parser.add_argument(
'--state_no_response', type=int, default=2, choices=[0, 1, 2, 3], '-r', '--state_no_response', type=int, default=2, choices=[0, 1, 2, 3],
help='Monitoring state if response (timeout) received.') help='Monitoring state if response (timeout) received.')
parser.add_argument( parser.add_argument(
'--stratum', type=_warn_crit, default=(10, 15), '-s', '--stratum', type=_warn_crit, default=(10, 15),
help='WARN,CRIT levels for stratum. Use values > 16 to disable.') help='WARN,CRIT levels for stratum. Use values > 16 to disable.')
parser.add_argument( parser.add_argument(
'--offset', type=_warn_crit, default=(200, 500), '-o', '--offset', type=_warn_crit, default=(200, 500),
help='WARN,CRIT levels for offset in milliseconds.') help='WARN,CRIT levels for offset in milliseconds.')
parser.add_argument( parser.add_argument(
'--delay', type=_warn_crit, default=(200, 500), '-d', '--delay', type=_warn_crit, default=(200, 500),
help='WARN,CRIT levels for delay in milliseconds.') help='WARN,CRIT levels for delay in milliseconds.')
parser.add_argument( parser.add_argument(
'--dispersion', type=_warn_crit, default=(200, 500), '-D', '--dispersion', type=_warn_crit, default=(200, 500),
help='WARN,CRIT levels for dispersion in seconds.') help='WARN,CRIT levels for dispersion in seconds.')
args = parser.parse_args(argv) args = parser.parse_args(argv)
args.server = args.server.strip(' ') args.host = args.host.strip(' ')
return args return args
...@@ -209,7 +209,7 @@ def main(args=None): ...@@ -209,7 +209,7 @@ def main(args=None):
) )
sys.exit(3) sys.exit(3)
ntp_time = get_ntp_time(args.server, args.port, args.timeout, args.version, args.state_no_response) ntp_time = get_ntp_time(args.host, args.port, args.timeout, args.version, args.state_no_response)
server_time = ctime(ntp_time.tx_time) server_time = ctime(ntp_time.tx_time)
stratum = int(ntp_time.stratum) stratum = int(ntp_time.stratum)
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
'name': 'check_ntp', 'name': 'check_ntp',
'num_files': 4, 'num_files': 4,
'title': 'Active check NTP', 'title': 'Active check NTP',
'version': '20221114.v.0.0.2', 'version': '20221115.v.0.0.2a',
'version.min_required': '2.0.0', 'version.min_required': '2.0.0',
'version.packaged': '2021.09.20', 'version.packaged': '2021.09.20',
'version.usable_until': None} 'version.usable_until': None}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment