[csw-devel] SF.net SVN: gar:[6611] csw/mgar/pkg/nagios/trunk

j_arndt at users.sourceforge.net j_arndt at users.sourceforge.net
Tue Sep 29 17:45:38 CEST 2009


Revision: 6611
          http://gar.svn.sourceforge.net/gar/?rev=6611&view=rev
Author:   j_arndt
Date:     2009-09-29 15:45:36 +0000 (Tue, 29 Sep 2009)

Log Message:
-----------
nagios: improved start / stop script, fix in prototype

Modified Paths:
--------------
    csw/mgar/pkg/nagios/trunk/checksums
    csw/mgar/pkg/nagios/trunk/files/CSWnagios.preinstall
    csw/mgar/pkg/nagios/trunk/files/CSWnagios.prototype
    csw/mgar/pkg/nagios/trunk/files/cswnagios

Removed Paths:
-------------
    csw/mgar/pkg/nagios/trunk/files/nagios

Modified: csw/mgar/pkg/nagios/trunk/checksums
===================================================================
--- csw/mgar/pkg/nagios/trunk/checksums	2009-09-29 15:28:52 UTC (rev 6610)
+++ csw/mgar/pkg/nagios/trunk/checksums	2009-09-29 15:45:36 UTC (rev 6611)
@@ -1,9 +1,9 @@
 e407a4b179bd7de72b3e8c21f309f9b7  download/CSWnagios.checkinstall
-db3f392c725ae6e9a3f5a969d2527b41  download/CSWnagios.preinstall
+5185cf1fded86e414e134710f075f4ed  download/CSWnagios.preinstall
 92437323de0cceaa58c6238ec9e6c954  download/CSWnagios.preremove
-8d38acdcd6d31711af14ad09e537ea20  download/CSWnagios.prototype
+4aa71b54c0fa268116a41abc7f3f2b5d  download/CSWnagios.prototype
 e493345589ac2c592c2b958499bc8c20  download/configure.diff
-d3b39178a60cf866a243d4d8f8eabb9b  download/cswnagios
+1d43a15b685160919b82b181c118cbae  download/cswnagios
 f3161bcb7c65f89707ee37b0a8d861d5  download/install-opts.diff
 3566167cc60ddeaad34e7d2e26ed4a58  download/nagios-3.2.0.tar.gz
 91407bdea2047b6ff5a1542550933144  download/patch.diff

Modified: csw/mgar/pkg/nagios/trunk/files/CSWnagios.preinstall
===================================================================
--- csw/mgar/pkg/nagios/trunk/files/CSWnagios.preinstall	2009-09-29 15:28:52 UTC (rev 6610)
+++ csw/mgar/pkg/nagios/trunk/files/CSWnagios.preinstall	2009-09-29 15:45:36 UTC (rev 6611)
@@ -4,8 +4,31 @@
 # 2007-09-11 Fix PKG_INSTALL_ROOT usage.  BASEDIR is not used for non
 #            relocatable packages.
 
+
 echo "Executing preinstall"
 
+cat << EOF
+
+=======================================================================
+
+From Nagios 3.2.0 on the configuration and log files for the OpenCSW 
+package are stored in /etc/opt/csw/nagios/ and /var/opt/csw/nagios/.
+
+Changes you made to your existing config will automatically 
+moved to the new location.
+
+
+Please be aware, that it's very likely that you have to change your
+nagios.cfg to that changes.
+
+            Installation will proceed in 30 seconds. 
+             Press CTRL+C if you want to stop now.
+
+=======================================================================
+EOF
+
+sleep 30
+
 #If installing package on a filesystem tree not running the OS; then exit.
 if [ ! x"$PKG_INSTALL_ROOT" = x"" ] ; then exit 0 ; fi
 
@@ -31,17 +54,5 @@
         /usr/sbin/usermod -G nagioscm nagios
 fi
 
-cat << EOF
 
-=======================================================================
-
-Configuration files were moved from /opt/csw/nagios/etc/ to
-/etc/opt/csw/nagios/.
-
-Changes which were made to the existing config will automatically 
-moved to the new location.
-
-=======================================================================
-EOF
-
 exit 0

Modified: csw/mgar/pkg/nagios/trunk/files/CSWnagios.prototype
===================================================================
--- csw/mgar/pkg/nagios/trunk/files/CSWnagios.prototype	2009-09-29 15:28:52 UTC (rev 6610)
+++ csw/mgar/pkg/nagios/trunk/files/CSWnagios.prototype	2009-09-29 15:45:36 UTC (rev 6611)
@@ -4,7 +4,7 @@
 d none /opt/csw/nagios/bin 0755 nagios nagios
 f none /opt/csw/nagios/bin/nagios 0754 nagios nagios
 f none /opt/csw/nagios/bin/nagiostats 0754 nagios nagios
-f none /opt/csw/nagios/bin/p1.pl 075 nagios nagios
+f none /opt/csw/nagios/bin/p1.pl 0754 nagios nagios
 d none /etc/opt/csw/nagios 0755 nagios nagios
 f cswpreserveconf /etc/opt/csw/nagios/cgi.cfg.CSW 0644 nagios nagios
 f none /etc/opt/csw/nagios/httpd-nagios.conf 0644 nagios nagios

Modified: csw/mgar/pkg/nagios/trunk/files/cswnagios
===================================================================
--- csw/mgar/pkg/nagios/trunk/files/cswnagios	2009-09-29 15:28:52 UTC (rev 6610)
+++ csw/mgar/pkg/nagios/trunk/files/cswnagios	2009-09-29 15:45:36 UTC (rev 6611)
@@ -28,26 +28,28 @@
 #
 # Modified for CSW by Alex Moore 2006-02-27
 # Modified for OpenCSW by Juergen Arndt 2009-03-11
+#
+# 2009-09-24 Alexander Skwar <alexander at skwar.name>
+#  - Load Solaris SMF file, if present
+#  - Use SMF exitcodes, if SMF file was loaded
+#  - use printf instead of "echo -n"
 
 #FMRI application       # FMRI path for service, see http://wiki.opencsw.org/cswclassutils-package#toc0
 
+# Load Solaris SMF Variables
+test -r /lib/svc/share/smf_include.sh && . /lib/svc/share/smf_include.sh
+
 status_nagios ()
 {
 
-	if test ! -f $NagiosRun; then
-		echo "No lock file found in $NagiosRun"
-		return 1
-	fi
-
-	NagiosPID=`head -n 1 $NagiosRun`
 	if test -x $NagiosCGI/daemonchk.cgi; then
-		if $NagiosCGI/daemonchk.cgi -l $NagiosRun; then
+		if $NagiosCGI/daemonchk.cgi -l $NagiosRunFile; then
 		        return 0
 		else
 			return 1
 		fi
 	else
-		if ps -p $NagiosPID; then
+		if ps -p $NagiosPID > /dev/null 2>&1; then
 		        return 0
 		else
 			return 1
@@ -57,20 +59,40 @@
 	return 1
 }
 
+printstatus_nagios()
+{
 
+	if status_nagios $1 $2; then
+		echo "nagios (pid $NagiosPID) is running..."
+	else
+		echo "nagios is not running"
+	fi
+}
+
 killproc_nagios ()
 {
 
-        if [ ! -f $NagiosRun ]; then
-		echo "No lock file found in $NagiosRun"
+        if [ ! -f $NagiosRunFile ]; then
+		echo "No lock file found in $NagiosRunFile"
 		return 1
 	fi
 
-	NagiosPID=`head -n 1 $NagiosRun`
+	NagiosPID=`head -n 1 $NagiosRunFile`
 	kill $2 $NagiosPID
 }
 
+pid_nagios ()
+{
 
+	if test ! -f $NagiosRunFile; then
+		echo "No lock file found in $NagiosRunFile"
+		test -z "$SMF_EXIT_ERR_FATAL" && exit 1
+		test -n "$SMF_EXIT_ERR_FATAL" && exit $SMF_EXIT_ERR_FATAL
+	fi
+
+	NagiosPID=`head -n 1 $NagiosRunFile`
+}
+
 # Source function library
 # Solaris doesn't have an rc.d directory, so do a test first
 if [ -f /etc/rc.d/init.d/functions ]; then
@@ -81,91 +103,146 @@
 
 prefix=/opt/csw/nagios
 exec_prefix=${prefix}
+NagiosVarDir=/var/${prefix}
 NagiosBin=${exec_prefix}/bin/nagios
-NagiosCfg=${prefix}/etc/nagios.cfg
-NagiosLog=${prefix}/var/status.log
-NagiosTmp=${prefix}/var/nagios.tmp
-NagiosSav=${prefix}/var/status.sav
-NagiosCmd=${prefix}/var/rw/nagios.cmd
-NagiosVar=${prefix}/var
-NagiosRun=${prefix}/var/nagios.lock
-NagiosLckDir=/var/lock/subsys
-NagiosLckFile=nagios
-NagiosCGI=${exec_prefix}/sbin
-Nagios=nagios
-          
+NagiosCfgFile=/etc/${prefix}/nagios.cfg
+NagiosStatusFile=${NagiosVarDir}/status.dat
+NagiosRetentionFile=${NagiosVarDir}/retention.dat
+NagiosCommandFile=${NagiosVarDir}/rw/nagios.cmd
+NagiosRunFile=${NagiosVarDir}/nagios.lock
+NagiosLockDir=/var/lock/subsys
+NagiosLockFile=nagios
+NagiosCGIDir=${exec_prefix}/sbin
+NagiosUser=nagios
+NagiosGroup=nagios          
 
 # Check that nagios exists.
-test -f $NagiosBin || exit 0
+if [ ! -f $NagiosBin ]; then
+    echo "Executable file $NagiosBin not found.  Exiting."
+    test -z "$SMF_EXIT_ERR_FATAL" && exit 1
+    test -n "$SMF_EXIT_ERR_FATAL" && exit $SMF_EXIT_ERR_FATAL
+fi
 
 # Check that nagios.cfg exists.
-test -f $NagiosCfg || exit 0
+if [ ! -f $NagiosCfgFile ]; then
+    echo "Configuration file $NagiosCfgFile not found.  Exiting."
+    test -z "$SMF_EXIT_ERR_CONFIG" && exit 1
+    test -n "$SMF_EXIT_ERR_CONFIG" && exit $SMF_EXIT_ERR_CONFIG
+fi
           
 # See how we were called.
 case "$1" in
 
 	start)
-		echo "Starting network monitor: nagios"
-		su - $Nagios -c "touch $NagiosVar/nagios.log $NagiosSav"
-		rm -f $NagiosCmd
-		$NagiosBin -d $NagiosCfg
-		if [ -d $NagiosLckDir ]; then touch $NagiosLckDir/$NagiosLckFile; fi
-		sleep 1
-		status_nagios nagios
+		printf "Starting nagios:"
+		$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
+		if [ $? -eq 0 ]; then
+			su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
+			rm -f $NagiosCommandFile
+			touch $NagiosRunFile
+			chown $NagiosUser:$NagiosGroup $NagiosRunFile
+			$NagiosBin -d $NagiosCfgFile
+			if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
+			echo " done."
+			test -z "$SMF_EXIT_OK" && exit 0
+			test -n "$SMF_EXIT_OK" && exit $SMF_EXIT_OK
+		else
+			echo "CONFIG ERROR!  Start aborted.  Check your Nagios configuration."
+			test -z "$SMF_EXIT_ERR_CONFIG" && exit 1
+			test -n "$SMF_EXIT_ERR_CONFIG" && exit $SMF_EXIT_ERR_CONFIG
+		fi
 		;;
 
 	stop)
-		echo "Stopping network monitor: nagios"
+		printf "Stopping nagios: "
+
+		pid_nagios
 		killproc_nagios nagios
-		rm -f $NagiosLog $NagiosTmp $NagiosRun $NagiosLckDir/$NagiosLckFile $NagiosCmd
+
+ 		# now we have to wait for nagios to exit and remove its
+ 		# own NagiosRunFile, otherwise a following "start" could
+ 		# happen, and then the exiting nagios will remove the
+ 		# new NagiosRunFile, allowing multiple nagios daemons
+ 		# to (sooner or later) run - John Sellens
+		#printf 'Waiting for nagios to exit .'
+ 		for i in 1 2 3 4 5 6 7 8 9 10 ; do
+ 		    if status_nagios > /dev/null; then
+ 			printf '.'
+ 			sleep 1
+ 		    else
+ 			break
+ 		    fi
+ 		done
+ 		if status_nagios > /dev/null; then
+ 		    echo ''
+ 		    echo 'Warning - nagios did not exit in a timely manner'
+ 		else
+ 		    echo 'done.'
+ 		fi
+
+		rm -f $NagiosStatusFile $NagiosRunFile $NagiosLockDir$NagiosLockFile $NagiosCommandFile
 		;;
 
 	status)
-		status_nagios nagios
+		pid_nagios
+		printstatus_nagios nagios
 		;;
 
+	checkconfig)
+		printf "Running configuration check..."
+		$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
+		if [ $? -eq 0 ]; then
+			echo " OK."
+		else
+			echo " CONFIG ERROR!  Check your Nagios configuration."
+			test -z "$SMF_EXIT_ERR_CONFIG" && exit 1
+			test -n "$SMF_EXIT_ERR_CONFIG" && exit $SMF_EXIT_ERR_CONFIG
+		fi
+		;;
+
 	restart)
 		printf "Running configuration check..."
-		$NagiosBin -v $NagiosCfg > /dev/null 2>&1;
+		$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
 		if [ $? -eq 0 ]; then
-			echo "done"
-			$0 stop
-			$0 start
+			echo "done."
+			"$0" stop
+			"$0" start
 		else
-			$NagiosBin -v $NagiosCfg
-			echo "failed - aborting restart."
-			exit 1
+			echo " CONFIG ERROR!  Restart aborted.  Check your Nagios configuration."
+			test -z "$SMF_EXIT_ERR_CONFIG" && exit 1
+			test -n "$SMF_EXIT_ERR_CONFIG" && exit $SMF_EXIT_ERR_CONFIG
 		fi
 		;;
 
 	reload|force-reload)
 		printf "Running configuration check..."
-		$NagiosBin -v $NagiosCfg > /dev/null 2>&1;
+		$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
 		if [ $? -eq 0 ]; then
-			echo "done"
-			if test ! -f $NagiosRun; then
-				$0 start
+			echo "done."
+			if test ! -f $NagiosRunFile; then
+				"$0" start
 			else
-				NagiosPID=`head -n 1 $NagiosRun`
+				pid_nagios
 				if status_nagios > /dev/null; then
 					printf "Reloading nagios configuration..."
 					killproc_nagios nagios -HUP
 					echo "done"
 				else
-					$0 stop
-					$0 start
+					"$0" stop
+					"$0" start
 				fi
 			fi
 		else
-			$NagiosBin -v $NagiosCfg
-			echo "failed - aborting reload."
-			exit 1
+			echo " CONFIG ERROR!  Reload aborted.  Check your Nagios configuration."
+			test -z "$SMF_EXIT_ERR_CONFIG" && exit 1
+			test -n "$SMF_EXIT_ERR_CONFIG" && exit $SMF_EXIT_ERR_CONFIG
 		fi
 		;;
 
 	*)
-		echo "Usage: nagios {start|stop|restart|reload|force-reload|status}"
-		exit 1
+		echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig}"
+		test -z "$SMF_EXIT_ERR_FATAL" && exit 1
+		test -n "$SMF_EXIT_ERR_FATAL" && exit $SMF_EXIT_ERR_FATAL
 		;;
 
 esac

Deleted: csw/mgar/pkg/nagios/trunk/files/nagios
===================================================================
--- csw/mgar/pkg/nagios/trunk/files/nagios	2009-09-29 15:28:52 UTC (rev 6610)
+++ csw/mgar/pkg/nagios/trunk/files/nagios	2009-09-29 15:45:36 UTC (rev 6611)
@@ -1,171 +0,0 @@
-#!/bin/sh
-# 
-# chkconfig: 345 99 01
-# description: Nagios network monitor
-#
-# File : nagios
-#
-# Author : Jorge Sanchez Aymar (jsanchez at lanchile.cl)
-# 
-# Changelog :
-#
-# 1999-07-09 Karl DeBisschop <kdebisschop at infoplease.com>
-#  - setup for autoconf
-#  - add reload function
-# 1999-08-06 Ethan Galstad <nagios at nagios.org>
-#  - Added configuration info for use with RedHat's chkconfig tool
-#    per Fran Boon's suggestion
-# 1999-08-13 Jim Popovitch <jimpop at rocketship.com>
-#  - added variable for nagios/var directory
-#  - cd into nagios/var directory before creating tmp files on startup
-# 1999-08-16 Ethan Galstad <nagios at nagios.org>
-#  - Added test for rc.d directory as suggested by Karl DeBisschop
-# 2000-07-23 Karl DeBisschop <kdebisschop at users.sourceforge.net>
-#  - Clean out redhat macros and other dependencies
-#
-# Description: Starts and stops the Nagios monitor
-#              used to provide network services status.
-#
-# Modified for CSW by Alex Moore 2006-02-27
-
-
-status_nagios ()
-{
-
-	if test ! -f $NagiosRun; then
-		echo "No lock file found in $NagiosRun"
-		return 1
-	fi
-
-	NagiosPID=`head -n 1 $NagiosRun`
-	if test -x $NagiosCGI/daemonchk.cgi; then
-		if $NagiosCGI/daemonchk.cgi -l $NagiosRun; then
-		        return 0
-		else
-			return 1
-		fi
-	else
-		if ps -p $NagiosPID; then
-		        return 0
-		else
-			return 1
-		fi
-	fi
-
-	return 1
-}
-
-
-killproc_nagios ()
-{
-
-        if [ ! -f $NagiosRun ]; then
-		echo "No lock file found in $NagiosRun"
-		return 1
-	fi
-
-	NagiosPID=`head -n 1 $NagiosRun`
-	kill $2 $NagiosPID
-}
-
-
-# Source function library
-# Solaris doesn't have an rc.d directory, so do a test first
-if [ -f /etc/rc.d/init.d/functions ]; then
-	. /etc/rc.d/init.d/functions
-elif [ -f /etc/init.d/functions ]; then
-	. /etc/init.d/functions
-fi
-
-prefix=/opt/csw/nagios
-exec_prefix=${prefix}
-NagiosBin=${exec_prefix}/bin/nagios
-NagiosCfg=${prefix}/etc/nagios.cfg
-NagiosLog=${prefix}/var/status.log
-NagiosTmp=${prefix}/var/nagios.tmp
-NagiosSav=${prefix}/var/status.sav
-NagiosCmd=${prefix}/var/rw/nagios.cmd
-NagiosVar=${prefix}/var
-NagiosRun=${prefix}/var/nagios.lock
-NagiosLckDir=/var/lock/subsys
-NagiosLckFile=nagios
-NagiosCGI=${exec_prefix}/sbin
-Nagios=nagios
-          
-
-# Check that nagios exists.
-test -f $NagiosBin || exit 0
-
-# Check that nagios.cfg exists.
-test -f $NagiosCfg || exit 0
-          
-# See how we were called.
-case "$1" in
-
-	start)
-		echo "Starting network monitor: nagios"
-		su - $Nagios -c "touch $NagiosVar/nagios.log $NagiosSav"
-		rm -f $NagiosCmd
-		$NagiosBin -d $NagiosCfg
-		if [ -d $NagiosLckDir ]; then touch $NagiosLckDir/$NagiosLckFile; fi
-		sleep 1
-		status_nagios nagios
-		;;
-
-	stop)
-		echo "Stopping network monitor: nagios"
-		killproc_nagios nagios
-		rm -f $NagiosLog $NagiosTmp $NagiosRun $NagiosLckDir/$NagiosLckFile $NagiosCmd
-		;;
-
-	status)
-		status_nagios nagios
-		;;
-
-	restart)
-		printf "Running configuration check..."
-		$NagiosBin -v $NagiosCfg > /dev/null 2>&1;
-		if [ $? -eq 0 ]; then
-			echo "done"
-			$0 stop
-			$0 start
-		else
-			$NagiosBin -v $NagiosCfg
-			echo "failed - aborting restart."
-			exit 1
-		fi
-		;;
-
-	reload|force-reload)
-		printf "Running configuration check..."
-		$NagiosBin -v $NagiosCfg > /dev/null 2>&1;
-		if [ $? -eq 0 ]; then
-			echo "done"
-			if test ! -f $NagiosRun; then
-				$0 start
-			else
-				NagiosPID=`head -n 1 $NagiosRun`
-				if status_nagios > /dev/null; then
-					printf "Reloading nagios configuration..."
-					killproc_nagios nagios -HUP
-					echo "done"
-				else
-					$0 stop
-					$0 start
-				fi
-			fi
-		else
-			$NagiosBin -v $NagiosCfg
-			echo "failed - aborting reload."
-			exit 1
-		fi
-		;;
-
-	*)
-		echo "Usage: nagios {start|stop|restart|reload|force-reload|status}"
-		exit 1
-		;;
-
-esac
-  
-# End of this script


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list