Module: check_mk
Branch: master
Commit: 89279b54e88b5c96f50ad60a79d93c2b762ebca3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=89279b54e88b5c…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Mar 11 14:34:34 2016 +0100
3286 FIX Fixing possible logging issues when using datasource programs for monitoring
When calling datasource programs for monitoring they are executed as subprocesses
of Check_MK. Check_MK as passing all filedescriptors except stdout and stderr to
the subprocess. So if a subprocess was doing something strange with them it could
happen that this influenced the handling within Check_MK.
This could, for example, confuse the communication between the CMC and the Check_MK
keepalive helper processes.
---
.werks/3286 | 16 ++++++++++++++++
ChangeLog | 1 +
modules/check_mk_base.py | 5 +++--
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/.werks/3286 b/.werks/3286
new file mode 100644
index 0000000..130ba15
--- /dev/null
+++ b/.werks/3286
@@ -0,0 +1,16 @@
+Title: Fixing possible logging issues when using datasource programs for monitoring
+Level: 1
+Component: core
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.9i1
+Date: 1457703007
+
+When calling datasource programs for monitoring they are executed as subprocesses
+of Check_MK. Check_MK as passing all filedescriptors except stdout and stderr to
+the subprocess. So if a subprocess was doing something strange with them it could
+happen that this influenced the handling within Check_MK.
+
+This could, for example, confuse the communication between the CMC and the Check_MK
+keepalive helper processes.
diff --git a/ChangeLog b/ChangeLog
index a9db791..b3c44de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
* 3221 FIX: Fixed broken nagios config because of missing contact group
check-mk-notify with rule based notifications enabled...
* 3234 FIX: Make unixcat more robust...
* 3275 FIX: Piggyback based services were skipped on "No agent hosts"...
+ * 3286 FIX: Fixing possible logging issues when using datasource programs for
monitoring...
Checks & Agents:
* 3183 aruba_wlc_aps: new check which monitors the provisioned accesspoints of an
Aruba Network WLAN Controller
diff --git a/modules/check_mk_base.py b/modules/check_mk_base.py
index a9d7322..3db97e9 100644
--- a/modules/check_mk_base.py
+++ b/modules/check_mk_base.py
@@ -772,8 +772,9 @@ def get_agent_info_program(commandline):
vverbose("Calling external program %s\n" % commandline)
try:
- p = subprocess.Popen(commandline, shell = True, stdout = subprocess.PIPE,
- stderr = subprocess.PIPE, preexec_fn=os.setsid)
+ p = subprocess.Popen(commandline, shell=True, stdin=open(os.devnull,
'w'),
+ stdout=subprocess.PIPE, stderr = subprocess.PIPE,
+ preexec_fn=os.setsid, close_fds=True)
stdout, stderr = p.communicate()
exitstatus = p.returncode
except MKTimeout: