Index: Makefile =================================================================== RCS file: /home/ncvs/ports/sysutils/smartmontools/Makefile,v retrieving revision 1.33 diff -u -r1.33 Makefile --- Makefile 21 Aug 2008 06:18:27 -0000 1.33 +++ Makefile 17 Dec 2008 20:31:52 -0000 @@ -18,7 +18,7 @@ GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-docdir=${DOCSDIR} --enable-sample -SUB_FILES= pkg-message +SUB_FILES= pkg-message smart USE_RC_SUBR= smartd MAN5= smartd.conf.5 @@ -28,6 +28,7 @@ @${REINPLACE_CMD} -e 's| install-initdDATA | |' ${WRKSRC}/Makefile.in post-install: + ${INSTALL_SCRIPT} ${WRKDIR}/smart ${PREFIX}/etc/periodic/daily/smart @${CAT} ${PKGMESSAGE} .include Index: pkg-plist =================================================================== RCS file: /home/ncvs/ports/sysutils/smartmontools/pkg-plist,v retrieving revision 1.4 diff -u -r1.4 pkg-plist --- pkg-plist 6 Jan 2007 20:13:10 -0000 1.4 +++ pkg-plist 17 Dec 2008 20:58:37 -0000 @@ -1,6 +1,7 @@ @comment $FreeBSD: ports/sysutils/smartmontools/pkg-plist,v 1.4 2007/01/06 20:13:10 pav Exp $ @unexec /bin/echo "===>" Stopping smartd ... @unexec /usr/bin/killall smartd 2>/dev/null || true +etc/periodic/daily/smart etc/smartd.conf.sample sbin/smartctl sbin/smartd Index: files/pkg-message.in =================================================================== RCS file: /home/ncvs/ports/sysutils/smartmontools/files/pkg-message.in,v retrieving revision 1.1 diff -u -r1.1 pkg-message.in --- files/pkg-message.in 11 May 2006 17:02:59 -0000 1.1 +++ files/pkg-message.in 17 Dec 2008 21:01:39 -0000 @@ -5,7 +5,12 @@ %%PREFIX%%/sbin/smartctl -a /dev/ad0 for first ATA drive %%PREFIX%%/sbin/smartctl -a /dev/da0 for first SCSI drive -To enable monitor of drives, you can use %%PREFIX%%/sbin/smartd +To include drive health information in your daily status reports, +add a line like the following to /etc/periodic.conf: + daily_status_smart_devices="/dev/ad0 /dev/da0" +substituting the appropriate device names for your SMART-capable disks. + +To enable drive monitoring, you can use %%PREFIX%%/sbin/smartd. A sample configuration file has been installed as %%PREFIX%%/etc/smartd.conf.sample Copy this file to %%PREFIX%%/etc/smartd.conf and edit appropriately Index: files/smart.in =================================================================== RCS file: files/smart.in diff -N files/smart.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/smart.in 17 Dec 2008 20:51:22 -0000 @@ -0,0 +1,52 @@ +#!/bin/sh +# This script is in the public domain. Original author: Garrett Wollman +# +# $FreeBSD$ +# + +if [ -r /etc/defaults/periodic.conf ]; then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +smartctl=%%PREFIX%%/sbin/smartctl +: ${daily_status_smartctl_flags="-H"} +: ${daily_status_smartctl_extra_status_flags="-a"} +# no default for ${daily_status_smart_devices} +if [ -z "${daily_status_smart_devices}" ]; then + : ${daily_status_smart_enabled="NO"} +else + : ${daily_status_smart_enabled="YES"} +fi +trim_junk="tail -n +4" + +tmpfile="$(mktemp /var/run/daily.XXXXXXXX)" +trap "rm -f ${tmpfile}" 0 1 3 15 + +rc=0 +case "${daily_status_smart_enable}" in + [Nn][Oo]) + ;; + *) + for device in ${daily_status_smart_devices}; do + if [ -e ${device} ]; then + echo + echo "Checking health of ${device}:" + echo + ${smartctl} ${daily_status_smartctl_flags} ${device} > "${tmpfile}" + status=$? + if [ $((status & 3)) -ne 0 ]; then + rc=2 + ${trim_junk} "${tmpfile}" + elif [ $status -ne 0 ]; then + rc=1 + ${smartctl} ${daily_status_smartctl_extra_status_flags} ${device} | ${trim_junk} + else + ${trim_junk} "${tmpfile}" + fi + fi + done + ;; +esac + +exit "$rc"