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

script zum automatischen Aufspielen einer neuen Senderliste

rolu2

Moderator
Teammitglied
Registriert
16. November 2009
Beiträge
9.093
Lösungen
4
Reaktionspunkte
4.662
Punkte
393
Moin Zusammen

Da meine Clienten mit ihrer Dreambox nicht in der Lage sind ihre Senderliste zu aktualisieren.( Denke die Problme kennt ihr ) :)

Habe ich mir vor langer Zeit ein scipt erstellt, welches über cron aufgerufen wird um z.B 20 Uhr Die Vorlage dazu ist aus dem Netz

Vorgehensweise

Die
Code:
timelu
muss nach
Code:
/etc/
Rechte 755
Die
Code:
kanallisteupdater.sh
muss nach
Code:
/usr/script/
Rechte 755. Sollte der Ordner script nicht vorhanden sein, anlegen

Der croneintrag könnte so aussehen
Code:
* 20 * * * /usr/script/kanallisteupdater.sh

Die
Code:
senderliste.zip und time
kommt auf den externen FTP

Jetzt noch die
Code:
kanallisteupdater.sh
mit einem linuxfähigen Editor bearbeiten. Hier sind nur 2 Zeilen zu ändern
SE="http://USER:pASSWORT@DYNDNS:pORT/ORDNER/senderliste.zip -O $TMP/senderliste.zip"
TI="http://USER:pASSWORT@DYNDNS:pORT/ORDNER/time.txt -O $TMP/time.txt"

Wie ihr seht, ist die Abfrage zum FTP-Server User und Passwortgeschützt im scipt. Wer das nicht möchte lässt
Code:
USER:PASSWORT@
weg

Was muss nun getan werden, das die Freude eine neue Senderliste bekommen, wenn Alles richtig eingerichtet ist

Nicht viel. Es muss eine neue senderliste.zip auf den Externen FTP geschoben werden und die datei time in der ersten Teile um einen Wert erhöht werden

Was macht das script nun.

Jeweils um 20 Uhr wird die Datei i
Code:
 time
vom Server geladen und mit der
Code:
 timelu
vergleichen. Ist die Zahl darin gleich passiert nix. Ist die Zahl darin grösser. Wird eine Meldung am TV angezeigt, das eine neue Kanalliste gefunden wurde. Hier wird jetzt gefragt, ob man updaten will. Bei Nein, passiert nix. Bis auf das am nächsten Tag wieder gefragt wird. Bei JA wird das script ausgeführt und jeder Abschnitt am TV angezeigt. Sollte zu wenig Speicherplatz vorhanden sein, wird das update gar nicht erst gestartet (Ausgabe am TV) Sollte beim Updaten was schief laufen, wird die Sicherung der vorher angelegten alten Senderliste wieder eingespielt


Code:
* 20 * * * /usr/script/kanallisteupdater.sh

Code:
1

Code:
2

Code:
#!/bin/sh
#erstellt von rolu2
#
TMP=/tmp
BACKUP=Kanallistensicherung
GRENZE=96
AKTUELL=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
#
#das script ist auf zip-datein ausgelegt
#
#Hier tragt ihr eure URL ein,von wo aus runtergeladen werden soll + wohin gespeichert werden soll. Hier nach /var/volatile/tmp/name.zip
SE="http://USER:PASSWORT@DYNDNS:PORT/ORDNER/senderliste.zip -O  $TMP/senderliste.zip"
TI="http://USER:PASSWORT@DYNDNS:PORT/ORDNER/time.txt -O  $TMP/time.txt"
#
#
#Downloaden von time.txt vom Server
wget $TI
chmod 755 $TMP/time.txt
#Speichern des Inhalts von timelu.txt und time in einer Variablen
export timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
export timen=$(cat /tmp/time.txt | head -n1 | tail -n1)
#Vergleich: Ist timelu kleiner als timen ?#
if [ $timelu -lt $timen ]; then
#Abfrage ob Update starten soll
wget -q -O - "http://127.0.0.1/web/message?text=Eine%20neue%20Senderliste%20steht%20bereit.\nSoll%20das%20Update%20gestartet%20werden?&type=0&timeout=10"
# Wird umgschalten auf nein, Anzeige bleibt aber stehen
wget -O /dev/null "http://127.0.0.1/web/remotecontrol?command=109" -q
sleep 10
rm -rf $TMP/answer
wget -O $TMP/answer "http://127.0.0.1/web/messageanswer?getanswer=now" -q
answer1=$(cat "$TMP/answer" | grep -o YES)
sleep 2 
answer2=$(cat "$TMP/answer" | grep -o JA)
if [ "$answer1" = YES ] || [ "$answer2" = JA ];then 
#Speicherplatz wird überprüft
wget -q -O - "http://127.0.0.1/web/message?text=Speicherplatz%20wird%20berechnet.&type=1&timeout=5"
sleep 5
if [ "$AKTUELL" -gt "$GRENZE" ] ; then
wget -q -O - "http://127.0.0.1/web/message?text=Nicht%20genug%20Speicherplatz%20vorhanden.%20Senderlistenaktualisierung%20wird%20beendet&type=1&timeout=5"
else
wget -q -O - "http://127.0.0.1/web/message?text=Es%20steht%20genug%20Speicherplatz%20zur%20Verfügung%20Senderlistenaktualisierung%20startet&type=1&timeout=5"
#Download der Senderliste vom Server
wget $SE
sleep 2
fi
fi
fi
sleep 2
#Speichern der time.txt in timelu.txt
#rm -rf /etc/timelu.txt
#mv /tmp/time.txt /tmp/timelu.txt
#mv /tmp/timelu.txt /etc
#rm -rf /tmp/timelu.txt
#sleep 2
if [ -e $TMP/senderliste.zip ]; then
wget -q -O - "http://127.0.0.1/web/message?text=Neue%20Senderliste%20wurde%20runtergeladen&type=1&timeout=5"
sleep 5
wget -q -O - "http://127.0.0.1/web/message?text=Sicherung%20der%20aktuellen%20Senderliste%20gestartet&type=1&timeout=5"
mkdir $TMP/$BACKUP
mv /etc/enigma2/*.tv $TMP/$BACKUP
mv /etc/enigma2/*.radio $TMP/$BACKUP
mv /etc/enigma2/blacklist $TMP/$BACKUP
mv /etc/enigma2/whitelist $TMP/$BACKUP
mv /etc/enigma2/lamedb $TMP/$BACKUP
mv /etc/tuxbox/satellites.xml $TMP/$BACKUP
mv /etc/tuxbox/terrestrial.xml $TMP/$BACKUP
mv /etc/tuxbox/cables.xml $TMP/$BACKUP
sleep 5
wget -q -O - "http://127.0.0.1/web/message?text=Neue%20Senderliste%20wird%20eingespielt&type=1&timeout=5"
unzip -oq $TMP/senderliste.zip -d /etc/enigma2
sleep 5
mv /etc/enigma2/satellites.xml /etc/tuxbox
mv /etc/enigma2/terrestrial.xml /etc/tuxbox
mv /etc/enigma2/cables.xml /etc/tuxbox
#Speichern der time.txt in timelu.txt
rm -rf /etc/timelu.txt
mv /tmp/time.txt /tmp/timelu.txt
mv /tmp/timelu.txt /etc
rm -rf /tmp/timelu.txt
rm -rf $TMP/senderliste.zip
sleep 5
if [ -e /etc/enigma2/lamedb ]; then
wget -q -O - "http://127.0.0.1/web/message?text=Aktualisierung%20abgeschlossen.%20Sicherung%20wird%20entfernt.\nSenderliste%20wurde%20neu%20geladen%20und%20steht%20nun%20zur%20Verfügung.&type=1&timeout=5"
else
wget -q -O - "http://127.0.0.1/web/message?text=Aktualisierung%20fehlgeschlagen.%20Sicherung%20wird%20eingespielt.\nSenderliste%20wurde%20neu%20geladen%20und%20steht%20nun%20zur%20Verfügung.&type=1&timeout=5"
sleep 1
rm -rf /etc/enigma2/*.tv /etc/enigma2/*.radio /etc/enigma2/blacklist /etc/enigma2/whitelist /etc/enigma2/lamedb
rm -rf /etc/tuxbox/satellites.xml /etc/tuxbox/terrestrial.xml /etc/tuxbox/cables.xml
sleep 2
mv $TMP/$BACKUP/*.tv /etc/enigma2
mv $TMP/$BACKUP/*.radio /etc/enigma2
mv $TMP/$BACKUP/blacklist /etc/enigma2
mv $TMP/$BACKUP/whitelist /etc/enigma2
mv $TMP/$BACKUP/lamedb /etc/enigma2
mv $TMP/$BACKUP/satellites.xml /etc/tuxbox
mv $TMP/$BACKUP/terrestrial.xml /etc/tuxbox
mv $TMP/$BACKUP/cables.xml /etc/tuxbox
fi
fi
sleep 1
#neue Senderliste und lamedb wird neu geladen
wget -O /dev/null "http://127.0.0.1/web/servicelistreload?mode=0" -q
sleep 1
rm -rf $TMP/$BACKUP

So wie hier markieren und packen als .zip
Du musst Regestriert sein, um das angehängte Bild zusehen.
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Hallo. Die Idee finde ich erstklassig ;) :thumbs-up-sign-emoji:

Eine Frage habe ich aber bevor ich anfange zu testen:

Kann man auch anstatt der "Senderliste.zip" eine vom Receiver übers Webif (OpenATV) generierte bouquets_Backup.rar benutzen? Kann eine RAR auch automatisch entpackt werden?
 
Diese Funktion ist doch implementiert.
Ob Das aber über Internet geht, entzieht sich meiner Kenntnis. Im lokalen Netzwerk aber kein Problem.
Geh ins OpenWebIf auf Bouquet-Editor und exportiere Deine Senderliste. Diese kannst Du dann von jedem anderen Receiver aus dem Verzeichnis /var/tmp (Spenderreceiver) in einen anderen Receiver laden. Selbstverständlich auch auf USB und dann per "Hand" auf einen Anderen, aber das war ja nicht die Frage.
Ich sehe keinen Grund, das auch über Internet (mit den nötigen Einstellungen) hinzubekommen.

MfG
 
Das mit dem Webif ist klar. Aber meine Eltern brauche ich die Sache nicht erklären, das wäre hoffungslos ;)

Deshalb fände ich die Lösung mit dem Script oben perfekt, weil ich dem Receiver ja per Cron sagen könnte, überprüfe auf Updates und lade wenn automatisch übers Internet. USB Stick in die Fritz mit Freigabe und gut ist.
 
Kann man auch anstatt der "Senderliste.zip" eine vom Receiver übers Webif (OpenATV) generierte bouquets_Backup.rar benutzen? Kann eine RAR auch automatisch entpackt werden?

Ob eine .rar Datei entpackt werden kann am Reciver kann ich dir nicht sagen, nie getestet

Aber wo ist das Problem die generierte bouquets_Backup.rar zu entpacken und als .zip zu packen
 
Ok, stimmt eigentlich :D Jetzt bin ich in den ganzfaulModus gewechselt ;)

So. Jetzt habe ich ech mit ein paar Anpassungen nach ein paar Tagen zum laufen bekommen :)
Wenn man bedenkt das ich vor ein paar Jahren noch nicht einmal wusste wie man Linux installiert, werde ich immer fitter ;)

Jetzt habe ich aber eine Frage: Wie kann man bei der Abfrage, ob man die neue Senderliste installieren will die Standard Antwort auf "Ja" setzen? Ich finde den Standard Eintrag nicht.
 
bei Zeile30 eine # vor
Code:
wget -O /dev/null "http://127.0.0.1/web/remotecontrol?command=109" -q
 
Zuletzt bearbeitet:
Super. Vielen, vielen Dank :thumbs-up-sign-emoji:

Eine Frage hab ich noch.
Da die drittletzte Zeile (#neue Senderliste und lamedb wird neu geladen) bei mir nicht funktioniert,
Könnte man irgendwo einen Reboot Befehl einbauen? Habs zum Schluss probiert, aber da macht er auch einen Reboot, wenn für die Liste kein Update bereit steht.
 
Erstmals THX für das geniale Script.

Ich schließ mich der letzten Frage an.
Wo muss ich den Reboot eintragen?
Ganz am Ende des Scripts wird dieser immer ausgeführt auch wenn gar kein Update gelaufen ist.
Der Reboot soll wirklich nur nach einem Update erfolgen.

script wurde sonst 1:1 übernommen
 
Was habt ihr für Boxen, das der Eintrag
Code:
wget -O /dev/null "http://127.0.0.1/web/servicelistreload?mode=0" -q
nicht geht?

Der Befehl erfolgt immer dann wenn eine neue Kanalliste installiert wurde oder auch die alte Kanalliste zurückgespielt wird, wegen Speicherplatz usw. Wenn ihr unbedingt einen reboot machen wollte einfach so eintragen

Code:
#neue Senderliste und lamedb wird neu geladen
#wget -O /dev/null "http://127.0.0.1/web/servicelistreload?mode=0" -q
#Startet Enigma2 neu
wget -q -O - "http://127.0.0.1/web/message?text=Der%20Receiver%20wird%20neu%20gestartet&type=1&timeout=5" 
wget -q -O - http://127.0.0.1/web/powerstate?newstate=3
rm -rf $TMP/$BACKUP
 
hm? Scheinbar wird der Befehl andauernd ausgeführt.
Auch wenn bei der Updateabfrage "Nein" ausgewählt wird, oder aber wenn gar kein Update verfügbar ist.
 
Stimmt mein Fehler. Der Eintrag
Code:
wget -q -O - "http://127.0.0.1/web/message?text=Der%20Receiver%20wird%20neu%20gestartet&type=1&timeout=5" 
wget -q -O - http://127.0.0.1/web/powerstate?newstate=3
muss 2 x rein und zwar da

Code:
if [ -e /etc/enigma2/lamedb ]; then
wget -q -O - "http://127.0.0.1/web/message?text=Aktualisierung%20abgeschlossen.%20Sicherung%20wird%20entfernt.\nSenderliste%20wurde%20neu%20geladen%20und%20steht%20nun%20zur%20Verfügung.&type=1&timeout=5"
#Startet Enigma2 neu
sleep 8
wget -q -O - "http://127.0.0.1/web/message?text=Der%20Receiver%20wird%20neu%20gestartet&type=1&timeout=5" 
sleep 8
wget -q -O - http://127.0.0.1/web/powerstate?newstate=3
else
wget -q -O - "http://127.0.0.1/web/message?text=Aktualisierung%20fehlgeschlagen.%20Sicherung%20wird%20eingespielt.\nSenderliste%20wurde%20neu%20geladen%20und%20steht%20nun%20zur%20Verfügung.&type=1&timeout=5"
sleep 1
rm -rf /etc/enigma2/*.tv /etc/enigma2/*.radio /etc/enigma2/blacklist /etc/enigma2/whitelist /etc/enigma2/lamedb
rm -rf /etc/tuxbox/satellites.xml /etc/tuxbox/terrestrial.xml /etc/tuxbox/cables.xml
sleep 2
mv $TMP/$BACKUP/*.tv /etc/enigma2
mv $TMP/$BACKUP/*.radio /etc/enigma2
mv $TMP/$BACKUP/blacklist /etc/enigma2
mv $TMP/$BACKUP/whitelist /etc/enigma2
mv $TMP/$BACKUP/lamedb /etc/enigma2
mv $TMP/$BACKUP/satellites.xml /etc/tuxbox
mv $TMP/$BACKUP/terrestrial.xml /etc/tuxbox
mv $TMP/$BACKUP/cables.xml /etc/tuxbox
#Startet Enigma2 neu
wget -q -O - "http://127.0.0.1/web/message?text=Der%20Receiver%20wird%20neu%20gestartet&type=1&timeout=5" 
sleep 8
wget -q -O - http://127.0.0.1/web/powerstate?newstate=3
fi
fi
 
Zuletzt bearbeitet:
hey erstmal danke für die tolle anleitung funktioniert richtig gut aber bei mir geht das nicht

#neue Senderliste und lamedb wird neu geladen
wget -O /dev/null " " -q


hab openatv

nach den updatet sind die sender immer noch so wie früher muss die box ein reboot verpassen denn geht es

mfg Mod21
 
Zuletzt bearbeitet:
reboot? reicht es nicht in den favouriten auf menü und kanalliste aktualisieren?
 
Zurück
Oben