54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
# SPDX-FileCopyrightText: PhiBo DinoTools (2021)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import click
|
|
import librouteros
|
|
import librouteros.query
|
|
import nagiosplugin
|
|
|
|
from ..cli import cli
|
|
from ..helper import logger
|
|
from ..resource import RouterOSCheckResource
|
|
|
|
|
|
class SystemUptimeResource(RouterOSCheckResource):
|
|
name = "UPTIME"
|
|
|
|
def __init__(self, cmd_options):
|
|
super().__init__(cmd_options=cmd_options)
|
|
|
|
def probe(self):
|
|
api = self._connect_api()
|
|
|
|
logger.info("Fetching data ...")
|
|
call = api.path(
|
|
"/system/resource"
|
|
).select(
|
|
librouteros.query.Key("uptime"),
|
|
)
|
|
results = tuple(call)
|
|
result = results[0]
|
|
|
|
yield nagiosplugin.Metric(
|
|
name="uptime",
|
|
value=self.parse_routeros_time_duration(result["uptime"]),
|
|
uom="s",
|
|
min=0,
|
|
)
|
|
|
|
|
|
@cli.command("system.uptime")
|
|
@click.pass_context
|
|
@nagiosplugin.guarded
|
|
def system_uptime(ctx):
|
|
"""Get Uptime of a device"""
|
|
check = nagiosplugin.Check(
|
|
SystemUptimeResource(
|
|
cmd_options=ctx.obj,
|
|
),
|
|
nagiosplugin.ScalarContext(
|
|
name="uptime",
|
|
)
|
|
)
|
|
|
|
check.main(verbose=ctx.obj["verbose"])
|