SCRIPT PER LANCIARE CCCAM E OSCAM SU DM800

Prima di partire il mio profilo per questo tutorial: Dreambox 800 con ENIGMA2 Nabilo Blackhole 0.12 installata.  CAM già installata CCcam 2.1.3 e OSCAM.

Questa guida serve per aggiungere una CAM al sistema o meglio…. aggiungere uno script personalizzato quando si seleziona la CAM desiderata dal blue panel.

L'eseguibile per CCcam si chiama CCcam_213, quello per oscam si chiama oscam_539 (ho mantenuto un eseguibile per ogni versione per poter facilmente tornare indietro). Tutti e due gli eseguibili si trovano in /usr/bin/.

Ovviamente cambiando il nome degli eseguibili è possibile adattare questa guida a qualsiasi situazione.

Partiamo dallo script poi lo commentiamo: lo script si deve trovare nella cartella della dreambox  con questo percorso "/usr/camscript" ed il suo nome deve iniziare obbligatoriamente con "Ncam_" rispettando maiuscole e minuscole.

Quando una CAM viene attivata, lo script relativo viene lanciato e gli viene passato il parametro "start", mentre quando la CAM viene disabilitata viene passato il parametro "stop".

Il mio script si chiama  "Ncam_oscam545_cccam213.sh" e questo è il contenuto:

#!/bin/sh

CAMNAME="OSCAM539_CCCAM213"

remove_tmp () {
    rm -rf /tmp/*.info* /tmp/*.tmp*
}

case "$1" in
    start)
    echo "[SCRIPT] $1: $CAMNAME"
    remove_tmp
    /usr/bin/oscam_539 -b &
    sleep 3
    /usr/bin/CCcam_213 &
    ;;
    stop)
    echo "[SCRIPT] $1: $CAMNAME"
    killall -9  CCcam_213 2>/dev/null
    sleep 1
    killall -9  oscam_539 2>/dev/null
    sleep 1
    remove_tmp
    ;;
    *)
    $0 stop
    exit 0
    ;;
esac

exit 0

#!/bin/sh
Indica al sistema che sta leggendo lo script quale è l'interprete da usare per l'esecuzione, ce ne sono vari.

CAMNAME="OSCAM539_CCCAM213"
Si popola la variabile che sarà usata per visualizzare il nome della CAM a video quando si scorre con i tasti destro e sinistro.

remove_tmp () {
    rm -rf /tmp/*.info* /tmp/*.tmp*
}

Qui si definisce una funzionncina che si chiama remove_tmp che serve per rimuovere i file temporanei da alcune directory

Le parole che iniziano con il $ sono delle variabili, $0 è il programma chiamato ovvero lo script, $1 è il primo parametro passato.

La parola chiave "case" permette di valutare cosa contiene la variabile $1. La parola chiave che chiude "case" è "esac".

Per ogni possibile condizione della variabile valutata si deve indicare con valore seguito da una parentesi tonda chiusa. La condizione viene a sua volta chiusa da doppio punto e virgola.

    start)
    echo "[SCRIPT] $1: $CAMNAME"
    remove_tmp
    /usr/bin/oscam_539 -b &
    sleep 3
    /usr/bin/CCcam_213 &
    ;;

quindi…. quando il primo parametro $1 è start

echo "[SCRIPT] $1: $CAMNAME"
scrive a video qualcosa per farci capire cosa sta facendo, in questo caso scriverebbe [SCRIPT] start: OSCAM539_CCCAM213

remove_tmp
richiama la funzione per la pulizia dei file temporanei

/usr/bin/oscam_539 -b &
Lancia l'eseguibile oscam_539 che si trova in /usr/bin/ con l'opzione -b per l'esecuzione in background. La & serve per eseguire questa operazione in modo asincrono cioè il sistema lancerà l'eseguibile ma continuerà l'esecuzione dello script senza attendere il termine dell'esecuzione.

sleep 3
Come è intuibile dice al sistema di attendere 3 secondi prima di continuare l'esecuzione (fa prendere un po' di respiro alla dreambox prima di lanciare la CCcam!)…

/usr/bin/CCcam_213 &
Stessa cosa per l'eseguibile della CCcam, in questo caso l'eseguibile non prevede il parametro -b

;;
Chiude la condizione di $1 = start

La condizione stop) è molto simile alla start ma, a differenza differenza di start, qui i processi vengono fermati invece che lanciati…

    *)
    $0 stop
    exit 0
    ;;

La condizione *) viene eseguita in tutti i casi e serve semplicemente per terminare l'esecuzione dello script ed uscire
 

PUNTO DI ATTENZIONE: la dreambox come sappiamo è gestita da una versione adattata di Linux con tutto ciò che ne comporta. in sistemi del genere il carattere per andare a capo alla fine di una riga è formato da un solo carattere invisibile comunemente chiamato LF (line feed).  Nei sistemi tipo Windows il sistema comunemente rappresenta il carattere per andare a capo con una combinazione di caratteri che sono CR+LF (carriage return + line feed).
Se aprite il vostro script per modificarlo su un sistema windows fate attenzione che il vostro editor utilizzi una modalita UNIX-like. Allo stesso modo se aprite il vostro script sotto UNIX o Linux o Mac buttate un occhio per verificare che il vostro editor sia configurato correttamente. A volte per motivi di compatibilità viene emulata la modalità di invio stile windows anche su sistemi Unix.
Ovviamente questo suggerimento viene fuori dopo aver sbattuto la testa per 10 minuti su uno script apparentemente corretto ma che andava in errore. Solo dopo ho capito che il mio editor su Mac emulava l'invio con carattere Windows e non veniva interpretato dal Linux della Dreambox!

Spero che questa piccola guida vi sia utile per poter creare il vostro script personale o per capire cosa fa la vostra dreambox quando attivate una CAM!! :-)

 

You can leave a response, or trackback from your own site.

Leave a Reply