Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

OSCAM ExpireDate überwachen und per Mail informieren

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:

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:
Man wird ja nur informiert, wenn die X Tage vor dem Ablaufdatum erreicht sind und in 24 Stunden kann viel passieren, so dass z.B. alle 24 Stunden 10 Tage vor Ablauf ganz nett sind, damit ich dann nicht im dunkeln sitzen muss. :innocent:
 
Zuletzt bearbeitet von einem Moderator:
deshalb hast du doch zur Not noch die Bildschirmanzeige, dunkel = NOK, auch bei erfolgreicher Mail :smirk:
 
Zuletzt bearbeitet:
zuerstmal tolle Arbeit! werd das Script am WE mal bei mir einbauen und schauen wie es sich so im Alltag schlägt (oder nervt xD)
was ich persönlich sinnvoll(er) fände wäre direkt in die Ausgabe der Mail die letzten 3 EMMs einzupflegen, damit man sieht ob bereits ein neues kam. braucht man nicht immer erst die OScam-Oberfläche öffnen und nachschauen (ich verlängere meist immer direkt (sofern 27er kommen oder ich noch gültige Entisetzer hab)).
 
Lasst doch einfach den 27er per blockemm-bylen durch und gut.
Alle anderen innerhalb der 60 Tage sollte man eh 'überwachen'.

Das geht m.E. auch manuell.
 
Zurück
Oben