Module: check_mk
Branch: master
Commit: 24a9cd7f382d4d51df6affc9e4d6503040c4b340
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=24a9cd7f382d4d…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Wed Dec 20 16:06:30 2017 +0100
5604 check_by_ssh: This active check is now configurable via WATO
Change-Id: Ifed0b58dca032a48c732780ae27e9585045d959a
---
.werks/5604 | 10 ++++++
checks/check_by_ssh | 66 ++++++++++++++++++++++++++++++++++
web/plugins/wato/active_checks.py | 76 +++++++++++++++++++++++++++++++++++++++
3 files changed, 152 insertions(+)
diff --git a/.werks/5604 b/.werks/5604
new file mode 100644
index 0000000..7744bcc
--- /dev/null
+++ b/.werks/5604
@@ -0,0 +1,10 @@
+Title: check_by_ssh: This active check is now configurable via WATO
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i3
+Date: 1513782368
+Class: feature
+
+
diff --git a/checks/check_by_ssh b/checks/check_by_ssh
new file mode 100644
index 0000000..3b7ce17
--- /dev/null
+++ b/checks/check_by_ssh
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2017 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# tails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+
+def check_by_ssh_arguments(params):
+ settings = params[1]
+ if 'hostname' in settings:
+ args = "-H %s" % quote_shell_string(settings['hostname'])
+ else:
+ args = "-H $HOSTADDRESS$"
+
+ args += " -C \"%s\"" % params[0]
+ if "port" in settings:
+ args += " -p %d" % settings["port"]
+ if "ip_version" in settings:
+ if settings['ip_version'] == 'ipv4':
+ args += ' -4'
+ else:
+ args += ' -6'
+
+ if "timeout" in settings:
+ args += ' -t %d' % settings["timeout"]
+ if "logname" in settings:
+ args += ' -l %s' % quote_shell_string(settings["logname"])
+ if "identity" in settings:
+ args += ' -i %s' % settings["identity"]
+
+ return args
+
+
+def check_by_ssh_description(params):
+ settings = params[1]
+ if 'description' in settings:
+ return settings['description']
+ return "check_by_ssh %s" % params[0]
+
+
+active_check_info['by_ssh'] = {
+ "command_line" : '$USER1$/check_by_ssh $ARG1$',
+ "argument_function" : check_by_ssh_arguments,
+ "service_description" : check_by_ssh_description ,
+ "has_perfdata" : True,
+}
diff --git a/web/plugins/wato/active_checks.py b/web/plugins/wato/active_checks.py
index 7a6d2e8..4a0f532 100644
--- a/web/plugins/wato/active_checks.py
+++ b/web/plugins/wato/active_checks.py
@@ -2190,3 +2190,79 @@ register_rule(group,
),
match = 'all'
)
+
+register_rule(group,
+ "active_checks:by_ssh",
+ Tuple(
+ title = _("Check via SSH service"),
+ help = _("Checks via SSH. "),
+ elements = [
+ TextAscii(
+ title = _("Command"),
+ help = _("Command to execute on remote host."),
+ allow_empty = False,
+ ),
+ Dictionary(
+ title = _("Optional parameters"),
+ elements = [
+ ( "description",
+ TextAscii(
+ title = _("Service Description"),
+ help = _("Must be unique for every host. Defaults to
command that is executed."),
+ size = 30)
+ ),
+ ( "hostname",
+ TextAscii(
+ title = _("DNS Hostname or IP address"),
+ default_value = "$HOSTADDRESS$",
+ allow_empty = False,
+ help = _("You can specify a hostname or IP address
different from IP address "
+ "of the host as configured in your host
properties."))),
+ ( 'port',
+ Integer(
+ title = _("SSH Port"),
+ help = _("Default is 22."),
+ minvalue = 1,
+ maxvalue = 65535,
+ default_value = 22)),
+ ( "ip_version",
+ Alternative(
+ title = _("IP-Version"),
+ elements = [
+ FixedValue(
+ "ipv4",
+ totext = "",
+ title = _("IPv4")
+ ),
+ FixedValue(
+ "ipv6",
+ totext = "",
+ title = _("IPv6")
+ ),
+ ],
+ )),
+ ( "timeout",
+ Integer(
+ title = _("Seconds before connection times out"),
+ unit = _("sec"),
+ default_value = 10,
+ )
+ ),
+ ( "logname",
+ TextAscii(
+ title = _("Username"),
+ help = _("SSH user name on remote host"),
+ size = 30)
+ ),
+ ( "identity",
+ TextAscii(
+ title = _("Keyfile"),
+ help = _("Identity of an authorized key"),
+ size = 30)
+ ),
+ ]
+ )
+ ]
+ ),
+ match = 'all'
+)