Because the legacy mail solution doesn’t work any more. Please keep in mind that you need to run upsmon as root, otherwise sendmail wont work due to insufficient privileges for dma.conf.
#!/bin/sh
DATUM=`/bin/date`
case $1 in
onbatt)
STAT=`upsc upsname@localhost ups.status`
BATT=`upsc upsname@localhost battery.charge`
RUNTIME=`upsc upsname@localhost battery.runtime`
UPSLOG=`cat /var/log/messages | grep ups | tail -50`
{
echo -ne "From: user@domain\n"
echo -ne "Subject: Server UPS Event\n"
echo -ne "$DATUM\n"
echo -ne "The Server runs for more than 5 min on UPS Battery now!\n\n"
echo -ne "UPS Status: $STAT\n"
echo -ne "UPS Battery Charge: $BATT%\n"
echo -ne "UPS Runtime: $RUNTIME seconds\n\n"
echo -ne "NUT Log:\n"
echo -ne "$UPSLOG"
} | sendmail -f user@domain recepient@domain &;;
online)
STAT=`upsc upsname@localhost ups.status`
BATT=`upsc upsname@localhost battery.charge`
RUNTIME=`upsc upsname@localhost battery.runtime`
UPSLOG=`cat /var/log/messages | grep ups | tail -50`
{
echo -ne "From: user@domain\n"
echo -ne "Subject: Server UPS Event\n"
echo -ne "$DATUM\n"
echo -ne "The Server UPS is back on Line Power now.\n\n"
echo -ne "UPS Status: $STAT\n"
echo -ne "UPS Battery Charge: $BATT%\n"
echo -ne "UPS Runtime: $RUNTIME seconds\n\n"
echo -ne "NUT Log:\n"
echo -ne "$UPSLOG"
} | sendmail -f user@domain recepient@domain &;;
commbad)
{
echo -ne "From: user@domain\n"
echo -ne "Subject: Server UPS Event\n"
echo -ne "$DATUM\n"
echo -ne "The Server lost Communication with the UPS!"
} | sendmail -f user@domain recepient@domain &;;
commok)
STAT=`upsc upsname@localhost ups.status`
BATT=`upsc upsname@localhost battery.charge`
RUNTIME=`upsc upsname@localhost battery.runtime`
UPSLOG=`cat /var/log/messages | grep ups | tail -50`
{
echo -ne "From: user@domain\n"
echo -ne "Subject: Server UPS Event\n"
echo -ne "$DATUM\n"
echo -ne "The Server has re-establish Communication with the UPS.\n\n"
echo -ne "UPS Status: $STAT\n"
echo -ne "UPS Battery Charge: $BATT%\n"
echo -ne "UPS Runtime: $RUNTIME seconds\n\n"
echo -ne "NUT Log:\n"
echo -ne "$UPSLOG"
} | sendmail -f user@domain recepient@domain &;;
powerdown)
BATT=`upsc upsname@localhost battery.charge`
RUNTIME=`upsc upsname@localhost battery.runtime`
UPSLOG=`cat /var/log/messages | grep ups | tail -100`
{
echo -ne "From: user@domain\n"
echo -ne "Subject: Server UPS Event\n"
echo -ne "$DATUM\n"
echo -ne "The Server shut down due to an UPS Event!!!\n\n"
echo -ne "UPS Battery Charge: $BATT%\n"
echo -ne "UPS Runtime: $RUNTIME seconds\n\n"
echo -ne "NUT Log:\n"
echo -ne "$UPSLOG"
} | sendmail -f user@domain recepient@domain &;;
*)
echo "wrong parameter";;
esac
exit 0
Please note that this script is based upon previous forum posts from other users, especially the sendmail block.