yaVDR – E-Mail Benachrichtigung für Aufnahmen

27 Mai 2013 von Oli82 Kommentieren »

Ich bin ein Mensch, der immer versucht auf dem Laufenden zu bleiben. So ist es auch bei meiner IT Zuhause. Lieber erhalte ich eine E-Mail zu viel, als dass ich ein Problem nicht frühzeitig erkenne.

Diese Tatsache setze ich auch bei meinem VDR durch. Ich möchte einfach folgende Dinge wissen und darüber Informiert werden:

  • Ist der VDR gestartet?
  • ist die Aufnahme gestartet?
  • wurde die Aufnahme beendet?
  • wurde der VDR wieder runtergefahren?
  • wie ist der Systemstatus?
  • sind Fehler aufgetreten?

Um diese Fragen zu beantworten, richte ich mir ein paar Statusemails ein, die der VDR je nach Event versendet.

01. Benötigte Pakete installieren

Für den Emailversand setze ich das Paket exim4 ein, da es einfach zu konfigurieren ist. Da bei der yaVDR Distribution standartmäßig kein mail installiert wird, benötigt man noch bsd-mailx.

# exim4 installieren:
sudo apt-get install exim4
# bsd-mailx für den Mailvesand installieren:
sudo apt-get install bsd-mailx
# exim4 konfigurieren:
sudo dpkg-reconfigure exim4-config

02. Konfiguration und Scripte

1. Schritt: exim4 Konfiguration

Die oben ausgeführt Konfiguration findet sich auch als Datei unter /etc/exim4/update-exim4.conf.conf  wieder:

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='deine-domain.de'
dc_local_interfaces=''
dc_readhost='yaVDR'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.deine-domain.de'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

2. Schritt: E-Mail Adressen konfigurieren:

Die Datei /etc/email-addresses regelt die Umwandlung der systeminternen Adresse zur externen Adresse.

# Das Format ist USERNAME: EMAILADRESSE
root: root<AT>deine-domain.de
vdr: vdr<AT>deine-domain.de

3. Schritt: Zugangsdaten hinterlegen

Die Datei /etc/exim4/passwd.client enthält die Zugangsdaten für die Authentifizierung am Smarthost (SMTP).

Die Angabe erfolgt im Format:

ziel.mail.server.example:login:password
# Bsp:
smtp.deine-domain.de:mustermann:Musterp4ssw0rt

4. Konfiguration testen:

Wenn man die Konfiguration abgeschlossen hat, muss der exim4 Dienst neu gestartet werden. Danach kann man mit folgendem Befehl die Funktion getestet werden:

mail -s "VDR Testmail" test<AT>oli82.de

Wenn die Konfiguration korrekt ist, bekommt man eine Mail an die angegebene Adresse 😉

Der Log findet sich unter /var/log/exim4/mainlog

5. Das Mailscript:

Bei dem Script habe ich mich von einem alten E-Mailscript inspirieren lassen und es in die recording-hooks eingebunden.

# sendmail.sh
# Vorraussetzungen: lm-sensors & hddtemp
sudo nano /usr/lib/vdr/sendmail.sh
#!/bin/bash
mailadr="email<AT>deine-domain.de"
datum=`date`
rec=$2
mode=$1
channel=`sed '/^\:.*/d' /var/lib/vdr/channels.conf | sed -n 's/\:.*//;'$3' p'`
rectime=`perl -e '$time=localtime($ARGV[0]); print $time, "\n";' $4`
space=`df -h | grep /dev/sdb1 | awk '{ print $4}'`
# ACHTUNG: Die Werte müssen bei euch angepasst werden!
cputemp=`sensors | grep 'CPU Temp' | awk '{ print $3}'`
mbtemp=`sensors | grep 'M/B Temp' | awk '{ print $3}'`
hdtemp=`hddtemp /dev/sdb | awk '{ print $4}'`
case $mode in
# start timer
  1) modestr="Start Timer"
     recording="Aufnahme: $rec"
     webmode="2";;
# stop timer
  2) modestr="Stop Timer"
     recording="Aufnahme: $rec"
     webmode="1";;
# shutdown
  3) modestr="Shutdown VDR"
     recording="Next Record $rec \nZeit: $rectime \nSender: $channel "
     webmode="0";;
# testmode
  *) modestr="Testmail"
     recording="";;
esac

echo -e "$modestr on $datum \n$recording \nFreier Speicher: $space Byte \nCPU-Temperatur:   $cputemp \nM/B-Temperatur: $mbtemp \nHDD-Temperatur: +$hdtemp" | mailx -s "$modestr on $datum" $mailadr

Damit das Script ausgeführt werden kann, weisen wir es dem User VDR zu und geben die entsprechenden Rechte:

sudo chown vdr:vdr /usr/lib/vdr/sendmail.sh
sudo chmod +x /usr/lib/vdr/sendmail.sh

Setzen des recording-hooks

Mit Hilfe der Recording-Hooks kann man Aktionen vor und nach der Aufnahme starten lassen. Für unser Email-Script erzeugen wir die file R80.mail unter /etc/vdr/recording-hooks und verlinken sie nach /usr/share/vdr/recording-hooks:

sudo nano /etc/vdr/recording-hooks/R80.mail
case $1 in
    before)
        # do here what ever you would like to do right BEFORE
        # the recording $2 STARTS
        /usr/lib/vdr/sendmail.sh 1 $2
        ;;
    after)
        # do here what ever you would like to do right AFTER
        # the recording $2 ENDED
        /usr/lib/vdr/sendmail.sh 2 $2
        ;;
    edited)
        # do here what ever you would like to do right AFTER
        # the recording $2 has been EDITED
        ;;
esac

#Datei mit STRG+X speichern
sudo ln -s /etc/vdr/recording-hooks/R80.mail /usr/share/vdr/recording-hooks/R80.mail

Das war schon alles. Optional kann man sich noch eine Shutdown-Mail in den den shutdown-hooks erstellen, die euch mitteilt, wann der VDR runter fährt und wann die nächste Aufnahme startet.
Diese lautet wie folgt:

sudo nano /usr/share/vdr/shutdown-hooks/S90.custom
# folgende Zeile einfügen
. /usr/lib/vdr/shutdown-mail.sh
# mit STRG + X speichern

sudo nano /usr/lib/vdr/shutdown-mail.sh

#!/bin/sh
datum=`date`
host=`hostname`
channel=`sed '/^\:.*/d' /var/lib/vdr/channels.conf | sed -n 's/\:.*//;'$3' p'`
rectime=`perl -e '$time=localtime($ARGV[0]); print $time, "\n";' $1`
echo -e "Shutdown VDR um $datum \nnaechste Aufnahme: $4 \nZeit: $rectime \nSender:
$channel" | mailx -s "Shutdown VDR um $datum von $host" email<AT>deine-domain.de
sleep 15
# Speichern mit STRG + X

sudo chmod +x /usr/lib/vdr/shutdown-mail.sh
# FERTIG

Der einzige Wermutstropfen hierbei ist die Tatsache, dass man bei Problemen oder Fehler bei der Aufnahme schnell mal mit E-Mails bombardiert wird. Nach einer Lösung bin ich noch am Suchen 8)

Werbung

Schreibe einen Kommentar


Deprecated: Function set_magic_quotes_runtime() is deprecated in /www/htdocs/w00b99e6/blog/counter/counter.php on line 61

Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /www/htdocs/w00b99e6/blog/counter/includes/mysql.class.php on line 165

Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /www/htdocs/w00b99e6/blog/counter/includes/mysql.class.php on line 165

Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /www/htdocs/w00b99e6/blog/counter/includes/mysql.class.php on line 165

Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /www/htdocs/w00b99e6/blog/counter/includes/mysql.class.php on line 165

Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead. in /www/htdocs/w00b99e6/blog/counter/includes/mysql.class.php on line 165

Deprecated: Function set_magic_quotes_runtime() is deprecated in /www/htdocs/w00b99e6/blog/counter/counter.php on line 1794