Module: check_mk
Branch: master
Commit: 3584c594cac74802badb472d6db20094c5ba5892
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3584c594cac748…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Sep 10 15:48:59 2012 +0200
FIX: Remove also user settings and event console rule on factory reset
---
ChangeLog | 1 +
web/htdocs/wato.py | 10 ++++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 40b9e07..9dff937 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -74,6 +74,7 @@
* FIX: Removed double collect_hosts() call in activate changes hook
* FIX: Fixed double hook execution when using localized multisite
* FIX: User list shows names of contactgroups when no alias given
+ * FIX: Remove also user settings and event console rule on factory reset
BI:
* Great speed up of rule compilation in large environments
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index e078419..8d3cbc2 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -5135,14 +5135,20 @@ def factory_reset():
for id in users.keys():
if id != config.user_id:
del users[id]
- save_users(users) # this will cleanup htpasswd
- for path in [ root_dir, multisite_dir, sites_mk, log_dir ]:
+ to_delete = [ path for c,n,path
+ in backup_paths
+ if n != "auth.secret" ] + [ log_dir ]
+ for path in to_delete:
if os.path.isdir(path):
shutil.rmtree(path)
elif os.path.exists(path):
os.remove(path)
+ make_nagios_directory(multisite_dir)
+ make_nagios_directory(root_dir)
+
+ save_users(users) # make sure, omdadmin is present after this
log_pending(SYNCRESTART, None, "factory-reset", _("Complete reset to factory settings."))
Module: check_mk
Branch: master
Commit: e20adce58fd4936ef1e68c82bb5da90b2486afdf
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e20adce58fd493…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Sep 7 15:14:22 2012 +0200
zypper: new check and plugin mk_zypper for checking zypper updates.
---
ChangeLog | 1 +
agents/plugins/mk_zypper | 40 +++++++++++++++++++++
checkman/zypper | 17 +++++++++
checks/zypper | 88 ++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4d4d2e3..fa90330 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -49,6 +49,7 @@
* Added Agent for OpenBSD
* Added Checks for UPS devices
* cisco_hsrp: New Check for monitoring HSRP groups on Cisco Routers. (SMIv2 version)
+ * zypper: new check and plugin mk_zypper for checking zypper updates.
WATO:
* Added permission to control the "clone host" feature in WATO
diff --git a/agents/plugins/mk_zypper b/agents/plugins/mk_zypper
new file mode 100755
index 0000000..64f7bb9
--- /dev/null
+++ b/agents/plugins/mk_zypper
@@ -0,0 +1,40 @@
+#!/bin/bash
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 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-
+# ails. 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.
+
+if type zypper > /dev/null ; then
+ echo '<<<zypper:sep(124)>>>'
+ if grep -q '^VERSION = 10' < /etc/SuSE-release
+ then
+ ZYPPER='waitmax 10 zypper --no-gpg-checks --non-interactive --terse'
+ $ZYPPER refresh > /dev/null
+ { $ZYPPER pchk || [ $? = 100 -o $? = 101 ] && $ZYPPER lu ; } \
+ | egrep '(patches needed|\|)' | egrep -v '^(#|Repository |Catalog )'
+ else
+ ZYPPER='waitmax 10 zypper --no-gpg-checks --non-interactive --quiet'
+ $ZYPPER refresh > /dev/null
+ { { $ZYPPER pchk || [ $? = 100 -o $? = 101 ] && $ZYPPER lp ; } ; $ZYPPER ll ; } \
+ | egrep '(patches needed|\|)' | egrep -v '^(#|Repository)'
+ fi
+fi
diff --git a/checkman/zypper b/checkman/zypper
new file mode 100644
index 0000000..1044306
--- /dev/null
+++ b/checkman/zypper
@@ -0,0 +1,17 @@
+title: Check for (security) updates via Zypper
+agents: linux
+author: Mathias Kettner <mk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check checks for available updates via {zypper} and SLES
+ and OPENSUSE distributions. You need to install the plugin {mk_zypper}
+ into the {plugins} directory of your agent.
+
+ The check gets critical if there are security updates available.
+ It gets warning, if there are other updates available or if package
+ locks exist (created by {zypper addlock}).
+
+inventory:
+ One service will be created for each system where the {mk_zypper}
+ plugin produces a non-empty output.
diff --git a/checks/zypper b/checks/zypper
new file mode 100644
index 0000000..49a6a4c
--- /dev/null
+++ b/checks/zypper
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 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-
+# ails. 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.
+
+# <<<zypper:sep(124)>>>
+# 5 patches needed (2 security patches)
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-326 | 1 | recommended | needed | Softwarestack update
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-316 | 1 | security | needed | bind: Fixed a remote denial of service
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-318 | 1 | recommended | needed | mdadm: fixed some race conditions during startup
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-320 | 1 | security | needed | update for libxml2
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-321 | 1 | recommended | needed | sudo: fixed pam session leak and tls option handling
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-324 | 1 | recommended | needed | util-linux: make mount honor 'noexec' and 'user' option
+# 1 | apache | package | (any)
+# 2 | mysql | package | (any)
+
+
+def inventory_zypper(info):
+ if len(info) > 0:
+ return [(None,{})]
+
+def check_zypper(_no_item, _no_params, info):
+ patch_types = {}
+ updates = 0
+ locks = []
+ for line in info:
+ # 5 patches needed (2 security patches)
+ if len(line) >= 6 and line[4].strip() == 'needed':
+ patch_type = line[3].strip()
+ patch_types.setdefault(patch_type, 0)
+ patch_types[patch_type] += 1
+ updates += 1
+ elif len(line) == 4:
+ locks.append(line[1])
+
+ if patch_types.get('security'):
+ state = 2
+ elif updates:
+ state = 1
+ else:
+ state = 0
+
+ infotext = nagios_state_names[state] + " - %d updates" % updates
+ if updates:
+ patch_items = patch_types.items()
+ patch_items.sort()
+ infos = []
+ for t,c in patch_items:
+ infos.append("%s: %d(%s)" % (t, c, t == "security" and '!!' or '!'))
+ infotext += " (" + ", ".join(infos) + ")"
+
+ if locks:
+ state = max(1, state)
+ infotext += ", %d locks(!)" % len(locks)
+
+ return state, infotext
+
+
+
+ return 3, "Hirni"
+
+check_info['zypper'] = {
+ "check_function" : check_zypper,
+ "inventory_function" : inventory_zypper,
+ "service_description" : "Zypper Updates",
+}
+