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

Settings Script für Senderlisten update

    Nobody is reading this thread right now.

couki

Ist oft hier
Premium
Registriert
14. Oktober 2015
Beiträge
130
Reaktionspunkte
17
Punkte
38
Also ich hab schon mehrere Scripts mir angeschau die sowas ähnliches aber wesentlich professioneller gelöst haben. Hab mir jetzt was ganz simples (für meinen zweck ausreichend) zusammen gebastelt.
#!/bin/sh
echo "Senderlisten Update by couki"

cd
cd /etc/enigma2
rm -rf userbouquet.dbe00.tv
BQ=" "
wget $BQ --no-check-certificate
rm -rf userbouquet.dbe02.tv
BQ=" "
wget $BQ --no-check-certificate
init 4 && init 3
exit 0

Das klappt mit OpenPli super. Was muss ich ändern das wenn z.B. "userbouquet.dbe00" nicht auf dem Webserver exestiert, die Datei auf der Box nicht durch "rm" gelöscht wird.?
Dann wäre es perfekt.

Gruß
 
Klappt nicht, sobald dein Code ausgeführt wird friert das script ein. Reboot nur noch über Schalter.

#!/bin/sh
echo "IPTV Update by couki"
until [ ping -c1 &>/dev/null ] ; do sleep 60 ; done
cd
cd /etc/enigma2/xstreamity
rm -rf playlists.txt
BQ=" "
wget $BQ --no-check-certificate
rm -rf x-playlists.json
BQ=" "
wget $BQ --no-check-certificate
rm -rf downloads2.json
BQ=" "
wget $BQ --no-check-certificate
###init 4 && init 3
exit 0
 
Zuletzt bearbeitet von einem Moderator:
Du hast dort schon die URL eingetragen die gecheckt werden soll? "URL" ist nur ein Platzhalter.

Der Code funktioniert jedenfalls

Code:
bash -x t
+ ping -c1 google.de
+ echo Commands
Commands

So sieht dein Script dann aus.

Code:
#!/bin/sh
echo "IPTV Update by couki"
until ping -c1 Beispiel URL  &>/dev/null ; do sleep 60 ; done
cd
cd /etc/enigma2/xstreamity
rm -rf playlists.txt
BQ="http://xxxxxxx.net/playlists.txt"
wget $BQ --no-check-certificate
rm -rf x-playlists.json
BQ="http://xxxxxxx.net/x-playlists.json"
wget $BQ --no-check-certificate
rm -rf downloads2.json
BQ="http://xxxxxxx.net/downloads2.json"
wget $BQ --no-check-certificate
###init 4 && init 3
 
Zuletzt bearbeitet von einem Moderator:
Hast recht, hab als URL da reingesetzt das klappte nicht. Mit xxxxxxx.net (so wie bei dir "google.de" ) klappt das. Super - Danke

@DarkStarXxX

eine Frage hab ich noch, - wie könnte man das runterladen bzw. ersetzen skippen wenn die Datei auf dem Server NICHT vorhanden ist.?

evtl. der Code von Wopper.?
if [ -f hxxp://www.xxx/userbouquet.tv ];
echo "Bouquet vorhanden - Download starten"

Edit:
Code:
url='hxxp://www.xxx/userbouquet.tv'
if curl -o/dev/null -sfIL "$url" 2>&1; then
echo "Bouquet vorhanden - Download starten"
######
Hier dann dein Code rein
######
sleep 1
else
echo "kein Bouquet vorhanden "
fi
Hab das nochmal versucht und es hat geklappt. Vielen Dank.
 
Zuletzt bearbeitet von einem Moderator:
Habe jetzt auch mal die Zeit gefunden, ein kleines Updateskript zu basteln
Bash:
#!/bin/sh
clear
echo "================================"
echo "Senderlistenupdate by Alex V 0.1"
echo "================================"
sleep 5
URL='https://url.testurl.com/senderliste'
NAME=senderliste.tar.gz
OVERSION=/tmp/$NAME
LVERSION=/usr/share/enigma2/senderliste

###Paketprüfung
PAKET=curl
if [[ -f $(which $PAKET 2>/dev/null) ]]
    then
    echo -e "\033[32m$PAKET ist bereits installiert...\033[0m"

    else
    echo -e "\033[33m$PAKET wird installiert...\033[0m"
        opkg update && opkg install $PAKET
fi

#Prüfen ob lokales Paket vorhanden, falls nicht Fakepaket erstellen
[ ! -d $LVERSION ] && mkdir $LVERSION
[ ! -f $LVERSION/$NAME ] && touch -t 195001011536 $LVERSION/$NAME

# Lokale Version feststellen
SVERSIONDATE=$(stat -c %y $LVERSION/$NAME | cut -d ' ' -f1)

# Onliversion feststellen:
if curl -o/dev/null -sfIL "$URL/$NAME" 2>&1; then
        echo ""
        echo "Onlinversion vorhanden:"
        wget -q -O $OVERSION $URL/$NAME
        SONLINEDATE=$(stat -c %y $OVERSION | cut -d ' ' -f1)
else
    echo -e "\t\033[1;31;40mKeine Onlineversion vorhanden! --> Abbruch!\033[0m"
    exit 1
fi
 
echo " Senderliste Lokal   =  ($SVERSIONDATE)"
echo " Senderliste Online  =  ($SONLINEDATE)"

# Lokales Datum und Onlindatum vergleichen
if [ $LVERSION/$NAME -ot $OVERSION ]; then
    echo ""
    echo -e "\033[33mOnlineversion ist aktueller, Update wird durchgeführt!\033[0m"
    wget -q -O $LVERSION/$NAME $URL/$NAME
    sleep 1
    rm /etc/enigma2/userbouquet.*
    rm /etc/enigma2/bouquets.*
    tar -xzf /tmp/$NAME -C /etc/enigma2
    sleep 1
    echo "Bouquets werden neu geladen"
    wget -q -qO - http://127.0.0.1/web/servicelistreload?mode=0 > /dev/null 2>&1
    sleep 1

else
    echo -e "\033[32mKein Update notwendig...\033[0m"
    exit 1
fi
echo -e "\033[32mUpdate abgeschlossen!\033[0m"

Die gepackte Senderliste liegt mit dem in $NAME definierten Namen im Netz in der in $URL definierten Adresse.
  • Zuerst wird überprüft ob ein lokales Senderlistenpaket vorhanden ist. Fall nein, wird ein Paket mit dem Erstelldatum 01.01.1950 erstellt.
  • Nun wird überprüft, ob online ein Senderlistenpaket erreichbar ist und falls ja, dieses heruntergeladen
  • Danach werden die Pakete verglichen und falls das Onlinepaket neuer ist, werden in /etc/enigma2 die Daten gelöscht und dann wird dies nach /etc/enigma2 entpackt.
  • Zum Schluss erfolgt noch ein Reload der Senderlisten
Verbesserungsvorschläge sind gern gesehen

ACHTUNG: Diese Script wurde nur auf openATV 7.3 getestet. Sollte aber auf allen Open-Alliance Images laufen.
 
Zuletzt bearbeitet:
das sieht mal gut aus, jetzt sollte nur noch gesagt werden, was wohin kommt
Senderlistenupdate.sh auf Box sonst nichts ?
ausführen mit bash ?
Server Seitig wo die Sendeliste liegen muss zb ( da könnte man auch Verschiedenen Listen dann drauf packen )
## nur 19°
19°+13°
## 19°+13°+Kabel
dann muss , man halt im script NAME/ URL Pfad in 1 oder 2 oder 3 ändern oder habe ich ein denkfehler ?
muss man dann noch auf der Box ein cron anlegen das es, zb jeden Tag 4:00 Uhr ausgeführt wird um zu Prüfen ob es was neues gibt ?

Danke schon mal :)
 
Senderlistenupdate.sh auf Box sonst nichts?
nach /home
ausführen mit bash?
Der Interpreter steht in Zeile 1. Also sh, aber bash geht in dem Fall auch

muss man dann noch auf der Box ein cron anlegen das es, zb jeden Tag 4:00 Uhr ausgeführt wird um zu Prüfen ob es was neues gibt ?
Du kannst noch das vor Update abgeschlossen einfügen, dann erstellt es einen Cron-Eintrag:

Code:
###Prüfen Cron###
echo "Prüfe cron..."
sleep 1
if cat /etc/cron/crontabs/root | grep /home/senderliste.sh > /dev/null 2>&1
        then
        echo -e "\033[32mCron vorhanden\033[0m"
        else
        echo -e "\033[33mCron Update\033[0m"
        echo "0 4 * * * /home/senderliste.sh" >> /etc/cron/crontabs/root
fi

dann muss , man halt im script NAME/ URL Pfad in 1 oder 2 oder 3 ändern oder habe ich ein denkfehler ?
Ja so hab ich es auch
 
Zurück
Oben