samba
This commit is contained in:
parent
381769cddd
commit
d7ac5744b2
1 changed files with 87 additions and 0 deletions
87
samba
Normal file
87
samba
Normal file
|
@ -0,0 +1,87 @@
|
|||
#!@@GOODSH@@
|
||||
# -*- sh -*-
|
||||
|
||||
: << =cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
samba - Plugin to monitor number of files held open by the CIFS clients
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
This plugin uses the following configuration variables:
|
||||
|
||||
[samba]
|
||||
user root
|
||||
env.smbstatus /usr/bin/smbstatus
|
||||
env.ignoreipcshare 1
|
||||
|
||||
Usually "smbstatus" requires to be run as root (see "user root" above).
|
||||
|
||||
Environment variables:
|
||||
|
||||
* smbstatus: path to "smbstatus" executable
|
||||
(default: search PATH and fall back to /usr/bin/smbstatus)
|
||||
* ignoreipcshare: set this variable to any non-empty value to ignore IPC$ when counting shares.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Unknown author
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
GPLv2
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=contrib
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=cut
|
||||
|
||||
SMBSTATUS=${smbstatus:-$(command -v smbstatus)}
|
||||
SMBSTATUS=${SMBSTATUS:-/usr/bin/smbstatus}
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -x "$SMBSTATUS" ]; then
|
||||
if "$SMBSTATUS" -V >/dev/null 2>&1; then
|
||||
echo 'yes'
|
||||
else
|
||||
echo "no (failed to run $SMBSTATUS - maybe need to run as 'root'?)"
|
||||
fi
|
||||
else
|
||||
echo 'no (smbstatus not found)'
|
||||
fi
|
||||
exit 0
|
||||
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'
|
||||
# Bug pointed out by kozik: there is no max field.
|
||||
# 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
|
||||
# shellcheck disable=SC2016
|
||||
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}'
|
Loading…
Reference in a new issue