ports/154382: [update port version] - nagios_check_hdd_health - Nagios plug-in to check HDD health from S.M.A.R.T
Marian Jamrich
jamrich.majo at gmail.com
Sat Jan 29 21:30:11 UTC 2011
>Number: 154382
>Category: ports
>Synopsis: [update port version] - nagios_check_hdd_health - Nagios plug-in to check HDD health from S.M.A.R.T
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Sat Jan 29 21:30:10 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Marian Jamrich
>Release:
>Organization:
>Environment:
>Description:
- update port from 1.0.1 to 1.1 version
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
diff -ruN /usr/ports/net-mgmt/nagios-check_hdd_health/pkg-descr /home/jamrich/ports/hdd/pkg-descr
--- /usr/ports/net-mgmt/nagios-check_hdd_health/pkg-descr 2010-12-10 05:51:19.000000000 +0100
+++ /home/jamrich/ports/hdd/pkg-descr 2011-01-25 13:58:05.377870636 +0100
@@ -1,5 +1,7 @@
-check_hdd_health is a Nagios plug-in written in shell to check HDD health.
-This script check HDD from S.M.A.R.T this values:
+Check_hdd_health is a Nagios plug-in written in shell to check HDD health.
+
+This script check HDD from this S.M.A.R.T values:
+
- Spin Retry Count
- Reallocated Sector Ct
- Reallocated Event Count
diff -ruN /usr/ports/net-mgmt/nagios-check_hdd_health/src/check_hdd_health /home/jamrich/ports/hdd/src/check_hdd_health
--- /usr/ports/net-mgmt/nagios-check_hdd_health/src/check_hdd_health 2011-01-03 14:45:25.000000000 +0100
+++ /home/jamrich/ports/hdd/src/check_hdd_health 2011-01-25 14:24:00.385428300 +0100
@@ -16,7 +16,7 @@
PROGNAME=`basename $0`
# Version
-VERSION="Version 1.0.1"
+VERSION="Version 1.1"
# Author
AUTHOR="Marian Jamrich"
@@ -26,9 +26,9 @@
# Clean up when done or when aborting
trap "rm -f ${TMPFILE}" 0 1 2 3 15
-#print_version() {
-# echo "$PROGNAME $VERSION $1"
-#}
+print_version() {
+ echo "Nagios-$PROGNAME ($VERSION)"
+}
mini_help() {
echo "Usage $0 --device $device --without [src rsc rec cps ou]"
@@ -36,9 +36,9 @@
print_help() {
clear;
- echo "*********************************************************************************"
- echo "* $PROGNAME $VERSION $1""($AUTHOR) <jamrich.majo at gmail.com> (2011) *"
- echo "*********************************************************************************"
+ echo "**************************************************************************************"
+ echo "* $PROGNAME $VERSION $1""($AUTHOR) <jamrich.majo at gmail.com> (2011) *"
+ echo "**************************************************************************************"
echo "This is Nagios plugin to check HDD health from S.M.A.R.T. by Smartmontools."
echo '
The S.M.A.R.T. attributes are specific properties (parameters) of various parts of a disk.
@@ -80,7 +80,7 @@
echo "Critical - if some value is greater than \"0\" except \"Spin Retry Count (>=10)\" and \"Reallocated Event Count (>=10)\"."
echo -e "\n---------------------------------------------------------------------"
echo "Usage:"
- echo "$0 --device /dev/ad0 [ --without [src rsc rec cps ou]]"
+ echo "$0 --device ad0 [ --without [src rsc rec cps ou]]"
echo "---------------------------------------------------------------------"
exit $ST_UN
}
@@ -93,12 +93,12 @@
-d | --device)
device=$2
;;
- -V)
+ -v)
print_version
- exit
+ exit $ST_UN
;;
*)
- echo "Unknown argument: $1"
+ echo "Unknown argument: $1"
echo "For more information please try -h or --help!"
exit $ST_UN
;;
@@ -108,26 +108,30 @@
test -z $device && echo -e "\nYou forgot to define device! Please try \"-h or --help\" to help." && exit $ST_UN
test `uname` != "FreeBSD" && echo "This plugin is only for FreeBSD." && exit $ST_UN
+format_device=`echo $device | grep -w 'dev'`
+if [ -z $format_device ]; then
+ device=/dev/`echo $device`
+fi
+
if [ ! -e $device ]; then
- echo
- echo "Unknown device \"$device\"!"
- exit $ST_UN
+ echo "Unknown device \"$device\"!"
+ exit $ST_UN
fi
if [ -z $smartctl ]; then
- echo -e "\nYou don't have installed $SMT. Please install it at http://smartmontools.sourceforge.net or pkg_add -r \"smartmontools\"..."
- exit $ST_UN
+ echo -e "\nYou don't have installed $SMT. Please install it from 'http://smartmontools.sourceforge.net' or pkg_add -r \"smartmontools\"..."
+ exit $ST_UN
fi
$smartctl -a $device > ${TMPFILE}
SMART_SUPPORT=`awk '/SMART support is/ {print $4}' ${TMPFILE} | tail -n 1`
if [ "${SMART_SUPPORT}" = "Unavailable" ]; then
- echo -e "\nS.M.A.R.T support is Unavailable for $device !!! You should enable it \"smartctl -s on $device\"."
- exit $ST_UN
+ echo -e "\nS.M.A.R.T support is unavailable for $device !!! You should enable it \"smartctl -s on $device\"."
+ exit $ST_UN
elif [ "${SMART_SUPPORT}" != "Enabled" ]; then
- echo -e "\nMaybe you don't have enabled S.M.A.R.T support in $SMT! Please type \"smartctl -s on $device\" that you have it turned on. Or device does not support S.M.A.R.T function."
- exit $ST_UN
+ echo -e "\nMaybe you don't have enabled S.M.A.R.T support in $SMT! Please type \"smartctl -s on $device\" that you have it turned on, or device does not support S.M.A.R.T function."
+ exit $ST_UN
fi
## start S.M.A.R.T test and set variables
@@ -138,7 +142,7 @@
ou=`awk '/Offline_Uncorrectable/ {print $10}' ${TMPFILE} `
pass=`awk -F\: '/test result/ { if ( $2 == " PASSED") print "PASSED"; else print "FAILED" }' ${TMPFILE} `
-## if one or more S.M.A.R.T function is not supported by your HDD, then you define --without variable and then value is set to "0"
+## if one or more S.M.A.R.T function is not supported by your HDD, then you define --without variable and then value is set automatically to "0"
args=`getopt w:without: $*`
for arg; do
case "$arg" in
@@ -150,16 +154,18 @@
esac
done
-# test if your HDD support all parameters:
-[ -z "$src" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support Spin_Retry_Count. Please try \"--without src\"." && mini_help && exit $ST_UN
-[ -z "$rsc" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support Reallocated_Sector_Ct. Please try \"--without rsc\"." && mini_help && exit $ST_UN
-[ -z "$rec" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support Reallocated_Event_Count. Please try --without rec." && mini_help && exit $ST_UN
-[ -z "$cps" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support Current_Pending_Sector. Please try --without cps." && mini_help && exit $ST_UN
-[ -z "$ou" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support Offline_Uncorrectable. Please try \"--without ou\"." && mini_help && exit $ST_UN
+# test if your HDD support all this parameters:
+[ -z "$src" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support "Spin Retry Count". Please try \"--without src\"." && mini_help && exit $ST_UN
+[ -z "$rsc" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support "Reallocated Sector Ct". Please try \"--without rsc\"." && mini_help && exit $ST_UN
+[ -z "$rec" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support "Reallocated Event Count". Please try --without rec." && mini_help && exit $ST_UN
+[ -z "$cps" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support "Current Pending Sector". Please try --without cps." && mini_help && exit $ST_UN
+[ -z "$ou" ] && echo -e "***********\n** ERROR **\n***********\n${device} don't support "Offline Uncorrectable". Please try \"--without ou\"." && mini_help && exit $ST_UN
perfdata="smart=src=$src; rsc=$rsc; rec=$rec; cps=$cps; ou=$ou; pass=$pass"
+############################################################
##### finally run test, print result and set exit code #####
+############################################################
if [ $src -eq 0 ] && [ $rsc -eq 0 ] && [ $rec -eq 0 ] && [ $cps -eq 0 ] && [ $ou -eq 0 ] && [ "$pass" = "PASSED" ]; then
echo "OK - HDD S.M.A.R.T health: src=$src, rsc=$rsc, rec=$rec, cps=$cps, ou=$ou, HEALTH_STATUS=$pass for $device. |${perfdata}"
exit $ST_OK
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list