B
BlackX
Guest
Moin,
Ich habe auf meinem Raspberry Pi OSCAM laufen und war es leid mir immer zu merken, wann meine Karte ausläuft, da ich die EMM's Blocke und nur schreiben möchte, kurz bevor meine Karte ausläuft. (Vielleicht hat ja jemand ähnliche Probleme ;-) )
Daher habe ich mir ein kleines Skript in bash implementiert, welches OSCAM überwacht:
Dieses Skript setzt voraus, das ssmtp für den Mailversand eingerichtet ist und das bc und curl installiert ist.
Des Weiteren müsstet ihr bei OSCAM_USER euer User für das OSCAM-Webinterface ergänzen und bei OSCAM_PASSWORT das Passwort für das Webinterface.
Sollte euer OSCAM nicht unter Port 8081 laufen, dann müsstet ihr noch den Port beim Aufruf anpassen.
Wenn ihr andere ID's überprüfen möchtet, müsstet ihr diese einmal im Aufruf beim Prüfen der Karte anpassen.
Bei mir heißen die Reader v13 und HD_Plus, wenn diese bei euch anders heißen, auch hier bitte anpassen.
Des Weiteren habe ich für den Aufruf des Scriptes einen Cronjob angelegt, der mich einmal täglich informiert, wenn die Tage vor Ablauf der Karte erreicht wurden
Gruß
BlackX
Ich habe auf meinem Raspberry Pi OSCAM laufen und war es leid mir immer zu merken, wann meine Karte ausläuft, da ich die EMM's Blocke und nur schreiben möchte, kurz bevor meine Karte ausläuft. (Vielleicht hat ja jemand ähnliche Probleme ;-) )
Daher habe ich mir ein kleines Skript in bash implementiert, welches OSCAM überwacht:
Bash:
#!/bin/bash
ERRORFILE=/home/pi/tools/log.txt
# User und Passwort des OSCAM-Webinterfaces
OSCAM_USER=
OSCAM_PASSWORT=
sendMail() {
cat /home/pi/tools/log.txt | mail -s "Probleme mit OSCAM" <Mail-Adresse>
rm $ERRORFILE
}
#
# Funktion prüft ob der eigene DYN-DNS Eintrag noch gueltig ist und auf die korrekte IP-Adresse zeigt.
# 1. Parameter: DNS-Adresse die ueberprueft werden soll
#
pingTest() {
if [ -n "$1" ]; then
CurrentIP=`curl -s http://whatismijnip.nl |cut -d " " -f 5`
URLIP=`ping -q -c1 $1`
temp=`echo $URLIP | cut -d '(' -f 2`
URLIP=`echo $temp | cut -d ')' -f 1`
fi
if [ "$?" -gt 0 ]; then
echo "Der Host $1 ist NICHT erreichbar!" >> $ERRORFILE
fi
if [ $URLIP != $CurrentIP ]; then
echo "Der Host $1 hat KEINE gueltige IP! gueltige IP ist: $CurrentIP aber der Host hat die IP $URLIP" >> $ERRORFILE
fi
}
#
# Funktion prüft ob die Temparatur des PI's noch ok ist oder ob der Pi überhitzt
#
temperatureTest() {
temperatureTemp=`vcgencmd measure_temp`
temperature=`echo $temperatureTemp | cut -d '=' -f2 | sed 's/..$//'`
if [ $(echo "if (${temperature} > 70) 1 else 0" | bc) -eq 1 ] ; then
echo "Die Temperatur hat 70 Grad ueberschritten und betraegt: $temperature" >> $ERRORFILE
fi
}
#
# Funktion prueft die Entitlements auf dem lokalen Server noch gueltig ist.
# 1. Parameter: Karte die uberprueft werden soll
# 2. Parameter: ID die uberprueft werden soll
# 3. Parameter: Anzahl Tage bevor eine Meldung kommen soll
#
checkExpireDateLocal(){
ExpireLine=`curl --anyauth -k --user $OSCAM_USER:$OSCAM_PASSWORT http://127.0.0.1:8081//entitlements.html?label="$1" | sed -ne '/'"$2"'/p'`
temp=`echo $ExpireLine | grep -oP "\K\d{4}-\d{2}-\d{2}"`
expireDate=`echo ${temp:10}`
ExpireDateInS=`date -d "$expireDate" +%s`
TodayDateinS=`date --date=''"$3"' day' +%s`
if [ "$TodayDateinS" -gt "$ExpireDateInS" ]; then
echo "Die Karte $1 laeuft am $expireDate ab " >> $ERRORFILE
fi
}
#
# Funktion prueft die Karte HD Plus noch gueltig ist.
# 1. Parameter: Karte die uberprueft werden soll
# 2. Parameter: ID die uberprueft werden soll
# 3. Parameter: Anzahl Tage bevor eine Meldung kommen soll
#
checkExpireDateHDPlus(){
ExpireLine=`curl --anyauth -k --user $OSCAM_USER:$OSCAM_PASSWORT http://127.0.0.1:8081//entitlements.html?label="$1" | sed -ne '/'"$2"'/p'`
expireDate=`echo $ExpireLine | grep -oP "\K\d{4}-\d{2}-\d{2}"`
ExpireDateInS=`date -d "$expireDate" +%s`
TodayDateinS=`date --date=''"$3"' day' +%s`
if [ "$TodayDateinS" -gt "$ExpireDateInS" ]; then
echo "Die Karte Plus laeuft am $expireDate ab" >> $ERRORFILE
fi
}
#
# MAIN Routine
#
if [ -s $ERRORFILE ]; then
rm $ERRORFILE
fi
# Pruefern der Karten
checkExpireDateHDPlus HD_Plus "FF FF FF FF" 10
checkExpireDateLocal HD_Plus "0000000000000BB8" 10
checkExpireDateLocal HD_Plus "0000000000000FA0" 10
checkExpireDateLocal v13 "0000000000000037" 10
pingTest example.com
temperatureTest
if [ -s $ERRORFILE ]; then
sendMail
fi
Dieses Skript setzt voraus, das ssmtp für den Mailversand eingerichtet ist und das bc und curl installiert ist.
Des Weiteren müsstet ihr bei OSCAM_USER euer User für das OSCAM-Webinterface ergänzen und bei OSCAM_PASSWORT das Passwort für das Webinterface.
Sollte euer OSCAM nicht unter Port 8081 laufen, dann müsstet ihr noch den Port beim Aufruf anpassen.
Wenn ihr andere ID's überprüfen möchtet, müsstet ihr diese einmal im Aufruf beim Prüfen der Karte anpassen.
Bei mir heißen die Reader v13 und HD_Plus, wenn diese bei euch anders heißen, auch hier bitte anpassen.
Des Weiteren habe ich für den Aufruf des Scriptes einen Cronjob angelegt, der mich einmal täglich informiert, wenn die Tage vor Ablauf der Karte erreicht wurden
Gruß
BlackX
Zuletzt bearbeitet von einem Moderator: