#! /bin/sh
#
# smartd warning script
#
# Home page of code is: http://www.smartmontools.org
#
# Copyright (C) 2012-16 Christian Franke
#
# 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, or (at your option)
# any later version.
#
# You should have received a copy of the GNU General Public License
# (for example COPYING); If not, see .
#
# $Id: smartd_warning.sh.in 4351 2016-10-17 18:53:40Z chrfranke $
#
set -e
# Set by config.status
@ENABLE_SCRIPTPATH_TRUE@export PATH="@scriptpath@"
PACKAGE="@PACKAGE@"
VERSION="@VERSION@"
prefix="@prefix@"
sysconfdir="@sysconfdir@"
smartdscriptdir="@smartdscriptdir@"
# Default mailer
os_mailer="@os_mailer@"
# Plugin directory (disabled if empty)
plugindir="@smartdplugindir@"
# Parse options
dryrun=
case $1 in
--dryrun) dryrun=t; shift ;;
esac
if [ $# != 0 ]; then
cat <&2
exit 1
fi
# Get host and domain names
for cmd in @os_hostname@ 'echo "[Unknown]"'; do
hostname=`eval $cmd 2>/dev/null` || continue
test -n "$hostname" || continue
break
done
dnsdomain=${hostname#*.}
if [ "$dnsdomain" != "$hostname" ]; then
# hostname command printed FQDN
hostname=${hostname%%.*}
else
for cmd in @os_dnsdomainname@ 'echo'; do
dnsdomain=`eval $cmd 2>/dev/null` || continue
break
done
test "$dnsdomain" != "(none)" || dnsdomain=
fi
for cmd in @os_nisdomainname@ 'echo'; do
nisdomain=`eval $cmd 2>/dev/null` || continue
break
done
test "$nisdomain" != "(none)" || nisdomain=
# Format subject
export SMARTD_SUBJECT="SMART error (${SMARTD_FAILTYPE-[SMARTD_FAILTYPE]}) detected on host: $hostname"
# Format message
fullmessage=`
echo "This message was generated by the smartd daemon running on:"
echo
echo " host name: $hostname"
echo " DNS domain: ${dnsdomain:-[Empty]}"
test -z "$nisdomain" ||
echo " NIS domain: $nisdomain"
@OS_WIN32_TRUE@test -z "$USERDOMAIN" ||
@OS_WIN32_TRUE@ echo " Win domain: $USERDOMAIN"
echo
echo "The following warning/error was logged by the smartd daemon:"
echo
echo "${SMARTD_MESSAGE-[SMARTD_MESSAGE]}"
echo
echo "Device info:"
echo "${SMARTD_DEVICEINFO-[SMARTD_DEVICEINFO]}"
echo
echo "For details see host's SYSLOG."
if [ "$SMARTD_FAILTYPE" != "EmailTest" ]; then
echo
echo "You can also use the smartctl utility for further investigation."
test "$SMARTD_PREVCNT" = "0" ||
echo "The original message about this issue was sent at ${SMARTD_TFIRST-[SMARTD_TFIRST]}"
case $SMARTD_NEXTDAYS in
'') echo "No additional messages about this problem will be sent." ;;
1) echo "Another message will be sent in 24 hours if the problem persists." ;;
*) echo "Another message will be sent in $SMARTD_NEXTDAYS days if the problem persists." ;;
esac
fi
`
# Export message with trailing newline
export SMARTD_FULLMESSAGE="$fullmessage
"
# Run plugin scripts if requested
if test -n "$plugindir"; then
case " $SMARTD_ADDRESS" in
*\ @*)
if [ -n "$dryrun" ]; then
echo "export SMARTD_SUBJECT='$SMARTD_SUBJECT'"
echo "export SMARTD_FULLMESSAGE='$SMARTD_FULLMESSAGE'"
fi
# Run ALL scripts if requested
case " $SMARTD_ADDRESS " in
*\ @ALL\ *)
for cmd in "$plugindir"/*; do
if [ -f "$cmd" ] && [ -x "$cmd" ]; then
if [ -n "$dryrun" ]; then
echo "$cmd &2
fi
;;
*)
SMARTD_ADDRESS="${SMARTD_ADDRESS:+ }$ad"
;;
esac
done
# Send email to remaining addresses
test -n "$SMARTD_ADDRESS" || exit 0
;;
esac
fi
# Send mail or run command
if [ -n "$SMARTD_ADDRESS" ]; then
# Send mail, use platform mailer by default
test -n "$SMARTD_MAILER" || SMARTD_MAILER=$os_mailer
if [ -n "$dryrun" ]; then
echo "exec '$SMARTD_MAILER' -s '$SMARTD_SUBJECT' $SMARTD_ADDRESS <