#!/bin/sh
# 
# Plugin to monitor the number of open files in the system.
#
# $Log$
# Revision 1.7.2.1  2005/01/29 20:13:59  jimmyo
# Made generic/samba more portable (fixes by Nicolas Stransky).
#
# Revision 1.7  2005/01/05 15:18:13  jimmyo
# Made generic/samba more portable (fixes by Nicolas Stransky).
#
# Revision 1.6  2005/01/04 18:25:33  jimmyo
# Made generic/samba more portable.
#
# Revision 1.5  2005/01/03 22:22:58  jimmyo
# Plugins: Made generic/samba more portable.
#
# Revision 1.4  2004/12/22 21:21:18  jimmyo
# Cleaned up generic/samba a bit (SF#1087961).
#
# Revision 1.3  2004/05/20 19:02:36  jimmyo
# Set categories on a bunch of plugins
#
# Revision 1.2  2004/01/29 19:39:00  jimmyo
# Generic plugins now use printf instead of echo -n, as this is more portable (SF#885564)
#
# Revision 1.1  2004/01/02 18:50:00  jimmyo
# Renamed occurrances of lrrd -> munin
#
# Revision 1.1.1.1  2004/01/02 15:18:07  jimmyo
# Import of LRRD CVS tree after renaming to Munin
#
# Revision 1.1  2003/11/24 10:01:53  jimmyo
# New plugin by Finn-Arne Johansen
#
#
# client-conf.d/-options:
#       
#       smbstatus       -- path to smbstatus executable
#       ignoreipcshare  -- ignore IPC$ whan counting shares
#                          any string will do
#
# Parameters:
# 	
# 	config   (required)
# 	autoconf (optional - used by munin-config)
#
# Magic markers (Used by munin-config and some installation scripts.
# Optional):
#
#%# family=contrib
#%# capabilities=autoconf

SMBSTATUS=${smbstatus:-`which smbstatus`}
SMBSTATUS=${SMBSTATUS:-/usr/bin/smbstatus}

if [ "$1" = "autoconf" ]; then
	if [ -x $SMBSTATUS ]; then
		echo yes
		exit 0
	else
		echo no '(smbstatus not found)'
		exit 1
	fi
fi

if [ "$1" = "config" ]; then

	echo 'graph_title Samba status'
	echo 'graph_args -l 0'
	echo 'graph_vlabel number'
	echo 'graph_category samba'
	echo 'proc.label processes'
	echo 'lock.label locked files'
	echo 'share.label Open shares'
	echo 'max.warning 900'
	echo 'max.critical 960'
	exit 0
fi

$SMBSTATUS -p 2>/dev/null | awk 'BEGIN {lines=0} $1 ~ /^[0-9]+/ {lines++} END {print "proc.value " lines}'
$SMBSTATUS -L 2>/dev/null | awk 'BEGIN {lines=0} $1 ~ /^[0-9]+/ {lines++} END {print "lock.value " lines}'
if [ -n "$ignoreipcshare" ]; then
	IGNORE='$1=="IPC$" {next}'
fi
$SMBSTATUS -S 2>/dev/null | awk '
BEGIN {lines=0;state=0}
$1=="Service"&&state==0 {state=1;next}
/^--*$/&&state==1 {state=2;next}
state<2 {next}
/^$/ {next}           
'"$IGNORE"'
{lines++}
END {print "share.value " lines}'
