packages: nagios-ocpd/nagios-ocpd.spec, nagios-ocpd/ocpd.init, nagios-ocpd/...

glen glen at pld-linux.org
Tue Jun 26 11:22:07 CEST 2012


Author: glen                         Date: Tue Jun 26 09:22:07 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- v1.1: support nsca 2.9 multiline

---- Files affected:
packages/nagios-ocpd:
   nagios-ocpd.spec (1.4 -> 1.5) , ocpd.init (1.5 -> 1.6) , ocpd.pl (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: packages/nagios-ocpd/nagios-ocpd.spec
diff -u packages/nagios-ocpd/nagios-ocpd.spec:1.4 packages/nagios-ocpd/nagios-ocpd.spec:1.5
--- packages/nagios-ocpd/nagios-ocpd.spec:1.4	Tue Jun 26 10:51:25 2012
+++ packages/nagios-ocpd/nagios-ocpd.spec	Tue Jun 26 11:22:01 2012
@@ -2,7 +2,7 @@
 %include	/usr/lib/rpm/macros.perl
 Summary:	Obsessive Compulsive Host/Service Processor Daemon for Nagios
 Name:		nagios-ocpd
-Version:	1.0
+Version:	1.1
 Release:	1
 License:	GPL v2+
 Group:		Networking/Daemons
@@ -39,8 +39,7 @@
 %prep
 %setup -qcT
 install -p %{SOURCE0} .
-cp -a %{SOURCE1} .
-%{__sed} -i -e 's,/usr/local/nagios/bin/send_nsca,/usr/sbin/send_nsca,' ocpd.pl
+cp -p %{SOURCE1} .
 
 %build
 %{__perl} -c ocpd.pl
@@ -49,6 +48,7 @@
 rm -rf $RPM_BUILD_ROOT
 install -d $RPM_BUILD_ROOT{%{_libdir},%{_spooldir},/etc/rc.d/init.d}
 install -p ocpd.pl $RPM_BUILD_ROOT%{_libdir}/ocpd
+%{__sed} -i -e 's,/usr/local/nagios/bin/send_nsca,/usr/sbin/send_nsca,' $RPM_BUILD_ROOT%{_libdir}/ocpd
 touch $RPM_BUILD_ROOT%{_spooldir}/host-perfdata.fifo
 touch $RPM_BUILD_ROOT%{_spooldir}/service-perfdata.fifo
 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
@@ -87,6 +87,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.5  2012/06/26 09:22:01  glen
+- v1.1: support nsca 2.9 multiline
+
 Revision 1.4  2012/06/26 08:51:25  glen
 - default send_nsca path
 

================================================================
Index: packages/nagios-ocpd/ocpd.init
diff -u packages/nagios-ocpd/ocpd.init:1.5 packages/nagios-ocpd/ocpd.init:1.6
--- packages/nagios-ocpd/ocpd.init:1.5	Mon Oct 12 17:23:11 2009
+++ packages/nagios-ocpd/ocpd.init	Tue Jun 26 11:22:01 2012
@@ -165,6 +165,8 @@
 	local nsca_host=$(awk '!/#/ { print }' $nsca_central_file)
 	local hostfifo=$(awk -F= '/^host_perfdata_file=/{print $2}' $nagios_cfg)
 	local servicefifo=$(awk -F= '/^service_perfdata_file=/{print $2}' $nagios_cfg)
+	local nsca_version=$($nsca | awk '/^NSCA Client/{ split($NF, v, /\./); printf("%d.%d\n", v[1], v[2]) }')
+	local nsca_multiline=$(awk -vv=$nsca_version 'BEGIN { if (v >= 2.9) print "-M" }')
 
 	if [ ! -p "$hostfifo" ]; then
 		mkfifo -m 600 "$hostfifo"
@@ -177,7 +179,7 @@
 
 	# XXX daemon() can't do --user and --fork without start-stop-daemon
 	export RC_LOGGING=no
-	daemon --user nagios --fork /usr/lib/nagios/ocpd -f $hostfifo,$servicefifo -n $nsca -H $nsca_host -c $nsca_cfg -r 1
+	daemon --user nagios --fork /usr/lib/nagios/ocpd -f $hostfifo,$servicefifo -n $nsca -H $nsca_host -c $nsca_cfg -r 1 $nsca_multiline
 
 	RETVAL=$?
 	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/nagios-ocpd
@@ -190,12 +192,16 @@
 	local nsca_host=$(awk '!/#/ { print }' $nsca_central_file)
 	local hostfifo=$(awk -F= '/^host_perfdata_file=/{print $2}' $nagios_cfg)
 	local servicefifo=$(awk -F= '/^service_perfdata_file=/{print $2}' $nagios_cfg)
+	local nsca_version=$($nsca | awk '/^NSCA Client/{ split($NF, v, /\./); printf("%d.%d\n", v[1], v[2]) }')
+	local nsca_multiline=$(awk -vv=$nsca_version 'BEGIN { if (v >= 2.9) print "-M" }')
 
 	echo "Host fifo: $hostfifo"
 	echo "Service FIFO: $servicefifo"
 	echo "send_nsca: $nsca"
 	echo "NSCA Host: $nsca_host"
 	echo "send_nsca config: $nsca_cfg"
+	echo "NSCA version: $nsca_version"
+	echo "NSCA multiline: $([ "$nsca_multiline" = "-M" ] && echo yes || echo no)"
 }
 
 stop() {

================================================================
Index: packages/nagios-ocpd/ocpd.pl
diff -u packages/nagios-ocpd/ocpd.pl:1.4 packages/nagios-ocpd/ocpd.pl:1.5
--- packages/nagios-ocpd/ocpd.pl:1.4	Tue Jun 26 11:05:01 2012
+++ packages/nagios-ocpd/ocpd.pl	Tue Jun 26 11:22:01 2012
@@ -4,6 +4,7 @@
 # Copyright (C) 2007 Thomas Guyot-Sionnest <tguyot at gmail.com>
 # Original code Copyright (C) 2006, 2007 Mark Steele
 #       http://www.control-alt-del.org/code
+# Copyright (C) 2009-2012 Elan Ruusamäe <glen at delfi.ee>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,12 +25,12 @@
 use POSIX;
 use strict;
 use warnings;
-use vars qw($PROGNAME $VERSION $READ_SIZE $MAX_LINE_LENGTH $CHILD_TIMEOUT %args);
+use vars qw($PROGNAME $VERSION $READ_SIZE $MAX_LINE_LENGTH $CHILD_TIMEOUT $RESULT_SEPARATOR %args);
 
 #####################################################################
 #
 $PROGNAME = 'OCP_daemon';
-$VERSION = '1.0rc4';
+$VERSION = '1.1';
 #
 # Try to get that much data each read. Normally a named pipe
 # can't hold more that 4096 bytes.
@@ -42,12 +43,19 @@
 # updates on a very slow network you'll likely want to increase this.
 $CHILD_TIMEOUT = 60;
 #
+#
+# nsca 2.9 wants different result separator:
+# When submitting multiple simultaneous results, separate each set with the ETB
+# character (^W or 0x17)
+# use -M (multiline) argument to switch to 2.9 behaviour
+$RESULT_SEPARATOR = "";
+
 #####################################################################
 
 # Ignore HUPs in case we've been lazily started from the shell
 $SIG{HUP} = 'IGNORE';
 
-getopts("f:n:H:p:t:c:r:m:l:h", \%args);
+getopts("f:n:H:p:t:c:r:m:Ml:h", \%args);
 
 # Print usage if missing options or -h
 if (!$args{'f'} || !$args{'H'} || $args{'h'}) {
@@ -63,6 +71,7 @@
 my $reaper_delay = $args{'r'} || 1;
 my $max_queue = $args{'m'} || 0;
 my $log_file = $args{'l'} || undef;
+$RESULT_SEPARATOR = "\x17" if $args{'M'};
 
 # Construct send_nsca command
 my $nsca = $args{'n'} || '/usr/local/nagios/bin/send_nsca';
@@ -187,7 +196,7 @@
   # Be safe here...
   $data .= $buf;
   while (my $marker = index ($data, "\n") + 1) {
-    push (@queue, substr ($data, 0, $marker));
+    push (@queue, substr ($data, 0, $marker). $RESULT_SEPARATOR);
     $data = substr ($data, $marker);
 
     if ($max_queue && $max_queue <= @queue) {
@@ -234,6 +243,8 @@
 
   print "  -m <slots>\tMax queue size if reaper_delay is greater than 0\n";
   print "\t\tA flush will be forced if the queue reach this size\n\n";
+
+  print "  -M\t\tSwitch to multiline processing. Needs nsca 2.9\n";
 
   exit 1;
 }
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/packages/nagios-ocpd/nagios-ocpd.spec?r1=1.4&r2=1.5
    http://cvs.pld-linux.org/packages/nagios-ocpd/ocpd.init?r1=1.5&r2=1.6
    http://cvs.pld-linux.org/packages/nagios-ocpd/ocpd.pl?r1=1.4&r2=1.5



More information about the pld-cvs-commit mailing list