First push of files
This commit is contained in:
commit
995454dd01
23
README
Normal file
23
README
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
check_md5
|
||||||
|
|
||||||
|
A Nagios plugin written in Bash to check the MD5 sum of a single file.
|
||||||
|
In case the files MD5 change the plugin issues a critical state. This behavior
|
||||||
|
can be changed by using a --warning argument, so that only a warning state is
|
||||||
|
issued.
|
||||||
|
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h
|
||||||
|
Print detailed help screen
|
||||||
|
-V
|
||||||
|
Print version information
|
||||||
|
|
||||||
|
--warning
|
||||||
|
Issue a warning state instead of a critical state in case of a MD5 failure
|
||||||
|
Default is critical
|
||||||
|
|
||||||
|
--file /path/to/file
|
||||||
|
Set which file to monitor
|
||||||
|
|
||||||
|
--md5 md5checksum
|
||||||
|
Set the MD5 checksum for the file set by --file
|
172
check_md5.sh
Executable file
172
check_md5.sh
Executable file
@ -0,0 +1,172 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# #
|
||||||
|
# Copyright (C) 2012 Jack-Benny Persson <jack-benny@cyberinfo.se> #
|
||||||
|
# #
|
||||||
|
# This program is free software; you can redistribute it and/or modify #
|
||||||
|
# it under the terms of the GNU General Public License as published by #
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or #
|
||||||
|
# (at your option) any later version. #
|
||||||
|
# #
|
||||||
|
# This program is distributed in the hope that it will be useful, #
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||||
|
# GNU General Public License for more details. #
|
||||||
|
# #
|
||||||
|
# You should have received a copy of the GNU General Public License #
|
||||||
|
# along with this program; if not, write to the Free Software #
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# #
|
||||||
|
# Nagios plugin to monitor a single files MD5 sum. In case of mismatch #
|
||||||
|
# the plugin exit with a CRICITAL error code. This behavior can be changed #
|
||||||
|
# with the --warning argument. #
|
||||||
|
# Written in Bash (and uses sed & awk). #
|
||||||
|
# #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
VERSION="1.0"
|
||||||
|
AUTHOR="(c) 2012 Jack-Benny Persson (jack-benny@cyberinfo.se)"
|
||||||
|
|
||||||
|
# Exit codes
|
||||||
|
STATE_OK=0
|
||||||
|
STATE_WARNING=1
|
||||||
|
STATE_CRITICAL=2
|
||||||
|
STATE_UNKNOWN=3
|
||||||
|
|
||||||
|
shopt -s extglob
|
||||||
|
|
||||||
|
#### Functions ####
|
||||||
|
|
||||||
|
# Print version information
|
||||||
|
print_version()
|
||||||
|
{
|
||||||
|
printf "\n\n$0 - $VERSION\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
#Print help information
|
||||||
|
print_help()
|
||||||
|
{
|
||||||
|
print_version
|
||||||
|
printf "$AUTHOR\n"
|
||||||
|
printf "Monitor the MD5 checksum of a single file\n"
|
||||||
|
/bin/cat <<EOT
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h
|
||||||
|
Print detailed help screen
|
||||||
|
-V
|
||||||
|
Print version information
|
||||||
|
|
||||||
|
--warning
|
||||||
|
Issue a warning state instead of a critical state in case of a MD5 failure
|
||||||
|
Default is critical
|
||||||
|
|
||||||
|
--file /path/to/file
|
||||||
|
Set which file to monitor
|
||||||
|
|
||||||
|
--md5 md5checksum
|
||||||
|
Set the MD5 checksum for the file set by --file
|
||||||
|
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Parse command line options
|
||||||
|
while [[ -n "$1" ]]; do
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
-h | --help)
|
||||||
|
print_help
|
||||||
|
exit $STATE_OK
|
||||||
|
;;
|
||||||
|
|
||||||
|
-V | --version)
|
||||||
|
print_version
|
||||||
|
exit $STATE_OK
|
||||||
|
;;
|
||||||
|
|
||||||
|
-?)
|
||||||
|
print_help
|
||||||
|
exit $STATE_OK
|
||||||
|
;;
|
||||||
|
|
||||||
|
--warning)
|
||||||
|
warning="yes"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
--file)
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
printf "\nOption $1 requires an argument\n"
|
||||||
|
print_help
|
||||||
|
exit $STATE_UNKNOWN
|
||||||
|
fi
|
||||||
|
file=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
--md5)
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
printf "\nOption $1 requires an argument\n"
|
||||||
|
print_help
|
||||||
|
exit $STATE_UNKNOWN
|
||||||
|
fi
|
||||||
|
md5=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
printf "\nInvalid option $1"
|
||||||
|
print_help
|
||||||
|
exit $STATE_UNKNOWN
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
### Check if we provided a file and a MD5 sum ###
|
||||||
|
|
||||||
|
if [[ -z "$file" ]]; then
|
||||||
|
# No file specified
|
||||||
|
printf "\nNo file specified"
|
||||||
|
print_help
|
||||||
|
exit $STATE_UNKNOWN
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$md5" ]]; then
|
||||||
|
# No MD5 sum specified
|
||||||
|
printf "\nNo MD5 sum specified"
|
||||||
|
print_help
|
||||||
|
exit $STATE_UNKNOWN
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
### MAIN ###
|
||||||
|
|
||||||
|
#Get the current checksum of the file
|
||||||
|
filesum=`md5sum ${file} | awk '{print $1}'`
|
||||||
|
|
||||||
|
#Compare the MD5 on the file against the sum we provided
|
||||||
|
if [[ "$filesum" == "$md5" ]]; then
|
||||||
|
printf "$file - MD5 OK\n"
|
||||||
|
exit $STATE_OK
|
||||||
|
|
||||||
|
#See if we wanted a warning instead of a critical
|
||||||
|
elif [[ "$warning" == "yes" ]]; then
|
||||||
|
printf "$file - MD5 WARNING\n"
|
||||||
|
exit $STATE_WARNING
|
||||||
|
#Critical
|
||||||
|
else
|
||||||
|
|
||||||
|
printf "$file - MD5 CRITICAL\n"
|
||||||
|
exit $STATE_CRITICAL
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 3
|
Loading…
x
Reference in New Issue
Block a user