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