SMB

check_smb_file_simple

Description:

Simple script to test a samba share.
You can use is to test if a file exists on a windows domain.

Usage:
$PROGNAME -H -W -s -f -u -p -S -E
$PROGNAME –help
$PROGNAME –version

Current Version

1.0

Last Release Date

2013-03-28

Compatible With

  • Nagios 3.x
  • Nagios XI

Owner

License

GPL


Project Files
Project Notes
Simple script to test a samba share. You can use is to test if a file exists on a windows domain. Use anonymous login if user name is not supplied. IT NEEDS SMBCLIENT PACKET TO WORK! Usage: $PROGNAME -H -W -s -f -u -p -S -E $PROGNAME --help $PROGNAME --version Put on your nagios plugins dir, and add it on Nagios configuration.
Reviews (2) Add a Review
I have also added a directory parameter
by JVD, December 31, 2019
I also want to check a sub directory in a share, so i added a sub directory parameter (-d), see the code:
---------------------------------
[root@localhost ~]# cat /usr/local/nagios/libexec/check_smb_file.sh
#!/bin/sh

# Check for file on SMB with nagios
# Cristian Barreto 2013-03-27

REVISION=1.0
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e 's,[\/][^\/][^\/]*$,,'`

. $PROGPATH/utils.sh

usage () {
echo "
Nagios plugin to check for SAMBA File. Use anonymous login if user name is not supplied.
IT NEEDS SMBCLIENT PACKET TO WORK!

Usage:
$PROGNAME -H -W -s -f -u -p -S -E
$PROGNAME --help
$PROGNAME --version

"
}

help () {
print_revision $PROGNAME $REVISION
echo; usage; echo; support
}

#print help
if [ $# -lt 3 ]; then
usage
exit $STATE_UNKNOWN
fi

user="guest"
pasword=""


while test -n "$1"; do
case "$1" in
--help | -h)
help
exit $STATE_OK;;
--version | -V)
print_revision $PROGNAME $REVISION
exit $STATE_OK;;
-H)
shift
host="$1";;
-W)
shift
workgroup="$1";;
-s)
shift
sharePathToTest="$1";;
-d)
shift
directoryToTest="$1";;
-f)
shift
fileToTest="$1";;
-u)
shift
user="$1";;
-p)
shift
password="$1";;
-S)
shift
onSuccessMessage="$1";;
-E)
shift
onErrorMessage="$1";;
*)
usage; exit $STATE_UNKNOWN;;
esac
shift
done

onSuccessMessage="OK: File exists!"
onErrorMessage="ERROR: File "//"$host""$sharePathToTest"$fileToTest" does not exists."

if [ "$fileToTest" == "" ]; then
echo "ERROR: You need to specify a file to test using -f parameter."
exit $STATE_UNKNOWN
fi

if [ "$directoryToTest" == "" ]; then
echo "directoryToTest = empty, do not add a sub directory after the share (and before the filename)"
fileToTest="$fileToTest"
else
echo "directoryToTest = Filled, add a sub directory after the share (and before the filename)"
fileToTest = "$directoryToTest/$fileToTest"
fi

smbclient //"$host""$sharePathToTest" -U "$user"%"$password" -W "$workgroup" -c "get "$directoryToTest/$fileToTest" /tmp/"$fileToTest""

if [ -f /tmp/"$fileToTest" ]; then
rm -f /tmp/"$fileToTest"
echo $onSuccessMessage
exit $STATE_OK
else
echo $onErrorMessage
exit $STATE_CRITICAL
fi
Helpful? Yes  No 
Dealing with subdirectories
by cenovusjim, October 31, 2015
Thanks for the great script. Made the following updates to deal with files in subdirectories:

$ diff check_smb_file check_smb_file-orig
18c18
$PROGNAME -H -W -s -f -u -p -S -E
57,59d56
";;
82c79
onErrorMessage="ERROR: File "//"$host""$sharePathToTest"$fileToTest" does not exists."
89c86
smbclient //"$host""$sharePathToTest" -U "$user"%"$password" -W "$workgroup" -c "get '$fileToTest' /tmp/"$fileToTest""
92c89
rm -f /tmp/"$fileToTest"
1 of 1 found this review helpful.
Helpful? Yes 1 No 0
Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
4 (2)
Favorites
0
Views
45,116