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

IPTV Script mit und ohne update Funktion

teorema

Ist gelegentlich hier
Registriert
30. August 2009
Beiträge
83
Reaktionspunkte
26
Punkte
38
Vorweg, mit "Update" meine ich dass das Script von euch jederzeit und ohne am Reciver selbst zu sein, ändern könnt.

Ich stelle mal einen meiner Scripte bereit.
Dieses Script habe ich in 3 Varianten geschrieben.

1.) Kombination aus PHP und Shell (Update möglich)

  • Nach eingabe von wenigen Komandos (die den meisten schon bekannt sein sollten), wird automatisch ein Scripts in der Box angelegt, dass das eigentliche Script vom Server abruft und ausführt.

2.) Kombination aus einem lokalen und einem Server Shell Script (Update möglich)

  • Genau wie 1. nur dass das Script was mit dem PHP Script erstellt werden würde, direckt auf der Box hinterlegt wird und manuel die Variablen bearbeitet werden.

3.) Ein Script das auf die Box geladen wird (Update nicht möglich)



1.) Kombination aus PHP und Shell (Update möglich)

  • Nach eingabe von wenigen Komandos (die den meisten schon bekannt sein sollten), wird automatisch ein Scripts in der Box angelegt, dass das eigentliche Script vom Server abruft und ausführt.

Dieses PHP Script auf den Server !!! Änderungen beachten !!!

Code:
<?php
if ((empty($_GET["UN"]))) {
    echo "Benutzername fehlt! <br />\n"; } 
else {
    $USERNAME = $_GET["UN"]; }

if ((empty($_GET["PW"]))) {
    echo "Passwort fehlt! <br />\n"; } 
else {
    $PASSWORD = $_GET["PW"]; }

if ((empty($_GET["BQ"]))) {
    $BOUQUET = "IPTV"; } 
else {
    $BOUQUET = $_GET["BQ"]; }
    ?>
<?php
if ((!empty($_GET["UN"])) && (!empty($_GET["PW"]))) {
echo '#!/bin/sh

USERNAME=".'$USERNAME'."
PASSWORD=".'$PASSWORD'."
BOUQUET=".'$BOUQUET'."
URL="[COLOR=#ff0000]http://eure-url.de:1234/get.php...........[/COLOR]" [COLOR=#ff0000]#<--- Ändern [/COLOR]

###System Variablen###
SPATH=`dirname $0`  #Path Name
SNAME=`basename $0` #Script Name
SURL="[COLOR=#ff0000]http://eure-url-zum-script.de[/COLOR]/iptvexec.sh" [COLOR=#ff0000]#<--- URL zum script[/COLOR]

echo "[+] Script Download"
wget -qO /tmp/iptvexec.sh ${SURL} > /dev/null

if [ -n /tmp/iptvexec.sh ]; then
    chmod 755 /tmp/iptvexec.sh
    export USERNAME PASSWORD BOUQUET URL SPATH SNAME
    cd /tmp/
    ./iptvexec.sh
else
    echo "[!] FEHLER: Download nicht moeglich"
    echo "Abbruch!"
    exit 1
fi';
} else {
echo 'Daten Fehlen'; }

Dieses Script muss auch auf den Server. Hier braucht man nichts zu ändern.

Code:
#Check ob iptv.sh im richtigen Ordner ist
if [ "${SPATH}" != "/usr/script" ]; then #Wenn Path nicht = /usr/script dann verschieben
    echo "[+] Script wird verschoben nach /usr/script/"
    
        if [ -d /usr/script ]; then #Verzeiches exsistiert
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}

                if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                    echo "[+] Script wurde verschoben."
                else
                    echo "[-] Script konnte nicht verschoben werden."
                    echo "[-] Weiter mit Fehler..."
                fi
        else
            mkdir /usr/script
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}
            
            if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                echo "[+] Script wurde verschoben."
            else
                echo "[-] Script konnte nicht verschoben werden."
                echo "[-] Weiter mit Fehler..."
            fi
        fi
fi

#Check ob Crontab vorhanden sonst neuen Crontab erstellen
cd /tmp/
crontab -l >> /tmp/crontmp
CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

if [ -z "${CRON_EXIST}" ]; then
    echo "[+] Crontab nicht vorhanden und wird erstellt." 
    echo "0 0 * * * /usr/script/${SNAME}" >> /tmp/crontmp
    sed -e '/^\s*$/d' /tmp/crontmp > /tmp/cronnew
    crontab cronnew
    rm /tmp/crontmp
    rm /tmp/cronnew
    
    crontab -l >> /tmp/crontmp
    CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

    if [ -z "${CRON_EXIST}" ]; then
        echo "[-] Crontab konnte nicht erstellt werden!"
        echo "[-] Weiter mit Fehler..."
        rm /tmp/crontmp
    else
        echo "[+] Crontab wurde erstellt."
        rm /tmp/crontmp
    fi
else
    rm /tmp/crontmp
fi

#Download vom IPTV Bouquet in den tmp Ordner
echo "[+] Lade neues IPTV Bouquet runter."
wget -qO /tmp/userbouquet."${BOUQUET}"_IpTv.tv ${URL} > /dev/null

#Check ob Download OK
if [ -s "/tmp/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
    echo "[+] Download OK."
    sed -i 's/#NAME .*/#NAME '${BOUQUET}'/g' /tmp/userbouquet."${BOUQUET}"_IpTv.tv
    
    EXIST_IN_UB=`grep "userbouquet.${BOUQUET}_IpTv.tv" /etc/enigma2/bouquets.tv`
    
    if [ -s "/etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv" ] && [ -n "$EXIST_IN_UB" ]; then
        FILE_DIFFP=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\+\#DESCRIPTION"`
        FILE_DIFFM=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\-\#DESCRIPTION"`

        if [ -n "${FILE_DIFFM}" ] || [ -n "${FILE_DIFFP}" ]; then
            if [ -n "${FILE_DIFFM}" ]; then
                echo ""
                echo "[?] Weggefallen:"
                echo "${FILE_DIFFM}"
                echo ""
            fi
    
            if [ -n "${FILE_DIFFP}" ]; then
                echo ""
                echo "[?] Hinzu gekommen:"
                echo "${FILE_DIFFP}"
                echo ""
            fi
        else
            echo "[?] Keine neuen Sender."
            echo "[+] Fertig."
            rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
            rm /tmp/iptvexec.sh
            exit 0;
        fi
    fi
        
            
    #Check ob altes IPTV Bouquet vorhanden
    if [ -e "/etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
        echo "[+] Loesche altes IPTV Bouquet."
        rm /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    fi
    
    mv /tmp/userbouquet."${BOUQUET}"_IpTv.tv /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
else
    echo "[!] Download Fehler abbruch!"
    echo "[!] Internet verbindung pruefen!"
    exit 1
fi

#Erstelle neues Bouquet (IPTV Bouquet an Stelle 2)
if ! cat /etc/enigma2/bouquets.tv | grep -c ${BOUQUET} > /dev/null; then
    cat /etc/enigma2/bouquets.tv | sed -n 1,2p > /etc/enigma2/new_bouquets.tv
    echo '#SERVICE 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.'${BOUQUET}'_IpTv.tv" ORDER BY bouquet' >> /etc/enigma2/new_bouquets.tv
    cat /etc/enigma2/bouquets.tv | sed -n '3,$p' >> /etc/enigma2/new_bouquets.tv
    rm /etc/enigma2/bouquets.tv
    echo "[+] Loesche alte Bouquetdatei"
    mv /etc/enigma2/new_bouquets.tv /etc/enigma2/bouquets.tv
    echo "[+] Lege nun die neue Bouquetdatei an"
fi

#Marker umwandeln
echo "[+] Wandel Marker um"
MARKER="0" #Markercounter

for MARKER_LINE in `grep -n '#DESCRIPTION [^A-Za-z0-9].*[A-Za-z0-9].*[^A-Za-z0-9].*' /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv | cut -d : -f 1`; do
    FUNDZEILEBOUQUET=`expr ${MARKER_LINE} - 1` #Auf Zeile mit Senderdaten setzen in Bouquet
    BOUQUETDATEN=`cat /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv | sed -n "${FUNDZEILEBOUQUET}"p`
    echo ${BOUQUETDATEN} | sed -i "${FUNDZEILEBOUQUET}s/ .*:.*:.*:.*:.*:.*:.*:.*:.*:.*:/ 1:64:${MARKER}:0:0:0:0:0:0:0:/g" /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    MARKER=`expr ${MARKER} + 1`
done

echo "[+] Lade Bouquet neu"
wget -qO - "http://127.0.0.1/web/servicelistreload?mode=2" >> /tmp/wget_status

WGET_STATUS=`grep "<e2state>True</e2state>" /tmp/wget_status`

if [ -z "${WGET_STATUS}" ]; then
    echo "[-] Bouquet konnte nich neu geladen werden."
    echo "[-] Reciver von Hand neu starten."
    echo "[-] Weiter mit Fehler"
    rm /tmp/wget_status
else
    echo "[+] Bouquet wurde neu geladen."
    rm /tmp/wget_status
fi
rm /tmp/iptvexec.sh
rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
echo "[+] Fertig"
exit 0;

In diesem Code muss das rot markierte geendert werden!
PS.: Das BQ in der URL steht dafür, um eurer IPTV Programmliste einen Namen zu geben z.B. IPTV
Nun Braucht man im Terminal nur eingeben...

Code:
wget -O /tmp/iptv.sh "http://[COLOR=#ff0000]eure-url-zum-php-script[/COLOR]/iptv.php?UN=[COLOR=#ff0000]euerUsername[/COLOR]&PW=[COLOR=#ff0000]euerPassword[/COLOR]&BQ=[COLOR=#ff0000]irgendwas[/COLOR]" && chmod 755 /tmp/iptv.sh && /tmp/iptv.sh

2.) Kombination aus einem lokalen und einem Server Shell Script (Update möglich)

  • Genau wie 1. nur dass das Script was mit dem PHP Script erstellt werden würde, direckt auf der Box hinterlegt wird und manuel die Variablen bearbeitet werden.

Dieses Script auf die Box in den Path /usr/script/iptv.sh !!! Änderungen beachten !!!
Und nicht vergessen die Rechte auf 755 zu setzen.

Code:
#!/bin/sh

USERNAME="[COLOR=#ff0000]euerUsername[/COLOR]"     [COLOR=#ff0000]#<--- Username einttragen[/COLOR]
PASSWORD="[COLOR=#ff0000]euerPassword[/COLOR]"    [COLOR=#ff0000]#<--- Password eintragen[/COLOR]
BOUQUET="[COLOR=#ff0000]euerBouquetName[/COLOR]" [COLOR=#ff0000]#<--- Bouquetname eintragen[/COLOR]
URL="[COLOR=#ff0000]http://eure-url.de:1234/get.php...........[/COLOR]" [COLOR=#ff0000]#<--- Ändern [/COLOR]

###System Variablen###
SPATH=`dirname $0`  #Path Name
SNAME=`basename $0` #Script Name
SURL="[COLOR=#ff0000]http://eure-url-zum-script.de[/COLOR]/iptvexec.sh" [COLOR=#ff0000]#<--- URL zum script[/COLOR]

echo "[+] Script Download"
wget -qO /tmp/iptvexec.sh ${SURL} > /dev/null

if [ -n /tmp/iptvexec.sh ]; then
    chmod 755 /tmp/iptvexec.sh
    export USERNAME PASSWORD BOUQUET URL SPATH SNAME
    cd /tmp/
    ./iptvexec.sh
else
    echo "[!] FEHLER: Download nicht moeglich"
    echo "Abbruch!"
    exit 1
fi

Dieses Script muss auch auf den Server. Hier braucht man nichts zu ändern.

Code:
#Check ob iptv.sh im richtigen Ordner ist
if [ "${SPATH}" != "/usr/script" ]; then #Wenn Path nicht = /usr/script dann verschieben
    echo "[+] Script wird verschoben nach /usr/script/"
    
        if [ -d /usr/script ]; then #Verzeiches exsistiert
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}

                if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                    echo "[+] Script wurde verschoben."
                else
                    echo "[-] Script konnte nicht verschoben werden."
                    echo "[-] Weiter mit Fehler..."
                fi
        else
            mkdir /usr/script
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}
            
            if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                echo "[+] Script wurde verschoben."
            else
                echo "[-] Script konnte nicht verschoben werden."
                echo "[-] Weiter mit Fehler..."
            fi
        fi
fi

#Check ob Crontab vorhanden sonst neuen Crontab erstellen
cd /tmp/
crontab -l >> /tmp/crontmp
CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

if [ -z "${CRON_EXIST}" ]; then
    echo "[+] Crontab nicht vorhanden und wird erstellt." 
    echo "0 0 * * * /usr/script/${SNAME}" >> /tmp/crontmp
    sed -e '/^\s*$/d' /tmp/crontmp > /tmp/cronnew
    crontab cronnew
    rm /tmp/crontmp
    rm /tmp/cronnew
    
    crontab -l >> /tmp/crontmp
    CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

    if [ -z "${CRON_EXIST}" ]; then
        echo "[-] Crontab konnte nicht erstellt werden!"
        echo "[-] Weiter mit Fehler..."
        rm /tmp/crontmp
    else
        echo "[+] Crontab wurde erstellt."
        rm /tmp/crontmp
    fi
else
    rm /tmp/crontmp
fi

#Download vom IPTV Bouquet in den tmp Ordner
echo "[+] Lade neues IPTV Bouquet runter."
wget -qO /tmp/userbouquet."${BOUQUET}"_IpTv.tv ${URL} > /dev/null

#Check ob Download OK
if [ -s "/tmp/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
    echo "[+] Download OK."
    sed -i 's/#NAME .*/#NAME '${BOUQUET}'/g' /tmp/userbouquet."${BOUQUET}"_IpTv.tv
    
    EXIST_IN_UB=`grep "userbouquet.${BOUQUET}_IpTv.tv" /etc/enigma2/bouquets.tv`
    
    if [ -s "/etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv" ] && [ -n "$EXIST_IN_UB" ]; then
        FILE_DIFFP=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\+\#DESCRIPTION"`
        FILE_DIFFM=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\-\#DESCRIPTION"`

        if [ -n "${FILE_DIFFM}" ] || [ -n "${FILE_DIFFP}" ]; then
            if [ -n "${FILE_DIFFM}" ]; then
                echo ""
                echo "[?] Weggefallen:"
                echo "${FILE_DIFFM}"
                echo ""
            fi
    
            if [ -n "${FILE_DIFFP}" ]; then
                echo ""
                echo "[?] Hinzu gekommen:"
                echo "${FILE_DIFFP}"
                echo ""
            fi
        else
            echo "[?] Keine neuen Sender."
            echo "[+] Fertig."
            rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
            rm /tmp/iptvexec.sh
            exit 0;
        fi
    fi
        
            
    #Check ob altes IPTV Bouquet vorhanden
    if [ -e "/etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
        echo "[+] Loesche altes IPTV Bouquet."
        rm /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    fi
    
    mv /tmp/userbouquet."${BOUQUET}"_IpTv.tv /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
else
    echo "[!] Download Fehler abbruch!"
    echo "[!] Internet verbindung pruefen!"
    exit 1
fi

#Erstelle neues Bouquet (IPTV Bouquet an Stelle 2)
if ! cat /etc/enigma2/bouquets.tv | grep -c ${BOUQUET} > /dev/null; then
    cat /etc/enigma2/bouquets.tv | sed -n 1,2p > /etc/enigma2/new_bouquets.tv
    echo '#SERVICE 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.'${BOUQUET}'_IpTv.tv" ORDER BY bouquet' >> /etc/enigma2/new_bouquets.tv
    cat /etc/enigma2/bouquets.tv | sed -n '3,$p' >> /etc/enigma2/new_bouquets.tv
    rm /etc/enigma2/bouquets.tv
    echo "[+] Loesche alte Bouquetdatei"
    mv /etc/enigma2/new_bouquets.tv /etc/enigma2/bouquets.tv
    echo "[+] Lege nun die neue Bouquetdatei an"
fi

#Marker umwandeln
echo "[+] Wandel Marker um"
MARKER="0" #Markercounter

for MARKER_LINE in `grep -n '#DESCRIPTION [^A-Za-z0-9].*[A-Za-z0-9].*[^A-Za-z0-9].*' /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv | cut -d : -f 1`; do
    FUNDZEILEBOUQUET=`expr ${MARKER_LINE} - 1` #Auf Zeile mit Senderdaten setzen in Bouquet
    BOUQUETDATEN=`cat /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv | sed -n "${FUNDZEILEBOUQUET}"p`
    echo ${BOUQUETDATEN} | sed -i "${FUNDZEILEBOUQUET}s/ .*:.*:.*:.*:.*:.*:.*:.*:.*:.*:/ 1:64:${MARKER}:0:0:0:0:0:0:0:/g" /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    MARKER=`expr ${MARKER} + 1`
done

echo "[+] Lade Bouquet neu"
wget -qO - "http://127.0.0.1/web/servicelistreload?mode=2" >> /tmp/wget_status

WGET_STATUS=`grep "<e2state>True</e2state>" /tmp/wget_status`

if [ -z "${WGET_STATUS}" ]; then
    echo "[-] Bouquet konnte nich neu geladen werden."
    echo "[-] Reciver von Hand neu starten."
    echo "[-] Weiter mit Fehler"
    rm /tmp/wget_status
else
    echo "[+] Bouquet wurde neu geladen."
    rm /tmp/wget_status
fi
rm /tmp/iptvexec.sh
rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
exit 0;
echo "[+] Fertig"
exit 0;

Nun Braucht man im Terminal nur eingeben...

Code:
/usr/script/iptv.sh

3.) Ein Script das auf die Box geladen wird (Update nicht möglich)

Dieses Script auf die Box in den Path /usr/script/iptv.sh !!! Änderungen beachten !!!
Und nicht vergessen die Rechte auf 755 zu setzen.

Code:
#!/bin/sh

USERNAME="[COLOR=#ff0000]euerUsername[/COLOR]"     [COLOR=#ff0000]#<--- Username einttragen[/COLOR]
PASSWORD="[COLOR=#ff0000]euerPassword[/COLOR]"    [COLOR=#ff0000]#<--- Password eintragen[/COLOR]
BOUQUET="[COLOR=#ff0000]euerBouquetName[/COLOR]" [COLOR=#ff0000]#<--- Bouquetname eintragen[/COLOR]
URL="[COLOR=#ff0000]http://eure-url.de:1234/get.php...........[/COLOR]" [COLOR=#ff0000]#<--- Ändern [/COLOR]

###System Variablen###
SPATH=`dirname $0`  #Path Name
SNAME=`basename $0` #Script Name

#Check ob iptv.sh im richtigen Ordner ist
if [ "${SPATH}" != "/usr/script" ]; then #Wenn Path nicht = /usr/script dann verschieben
    echo "[+] Script wird verschoben nach /usr/script/"
    
        if [ -d /usr/script ]; then #Verzeiches exsistiert
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}

                if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                    echo "[+] Script wurde verschoben."
                else
                    echo "[-] Script konnte nicht verschoben werden."
                    echo "[-] Weiter mit Fehler..."
                fi
        else
            mkdir /usr/script
            mv ${SPATH}/${SNAME} /usr/script/${SNAME}
            
            if [ -n /usr/script/${SNAME} ]; then #Script wurde verschoben
                echo "[+] Script wurde verschoben."
            else
                echo "[-] Script konnte nicht verschoben werden."
                echo "[-] Weiter mit Fehler..."
            fi
        fi
fi

#Check ob Crontab vorhanden sonst neuen Crontab erstellen
cd /tmp/
crontab -l >> /tmp/crontmp
CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

if [ -z "${CRON_EXIST}" ]; then
    echo "[+] Crontab nicht vorhanden und wird erstellt." 
    echo "0 0 * * * /usr/script/${SNAME}" >> /tmp/crontmp
    sed -e '/^\s*$/d' /tmp/crontmp > /tmp/cronnew
    crontab cronnew
    rm /tmp/crontmp
    rm /tmp/cronnew
    
    crontab -l >> /tmp/crontmp
    CRON_EXIST=`grep "0 0 \* \* \* /usr/script/${SNAME}" /tmp/crontmp`

    if [ -z "${CRON_EXIST}" ]; then
        echo "[-] Crontab konnte nicht erstellt werden!"
        echo "[-] Weiter mit Fehler..."
        rm /tmp/crontmp
    else
        echo "[+] Crontab wurde erstellt."
        rm /tmp/crontmp
    fi
else
    rm /tmp/crontmp
fi

#Download vom IPTV Bouquet in den tmp Ordner
echo "[+] Lade neues IPTV Bouquet runter."
wget -qO /tmp/userbouquet."${BOUQUET}"_IpTv.tv ${URL} > /dev/null

#Check ob Download OK
if [ -s "/tmp/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
    echo "[+] Download OK."
    sed -i 's/#NAME .*/#NAME '${BOUQUET}'/g' /tmp/userbouquet."${BOUQUET}"_IpTv.tv
    
    EXIST_IN_UB=`grep "userbouquet.${BOUQUET}_IpTv.tv" /etc/enigma2/bouquets.tv`
    
    if [ -s "/etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv" ] && [ -n "$EXIST_IN_UB" ]; then
        FILE_DIFFP=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\+\#DESCRIPTION"`
        FILE_DIFFM=`diff -b /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv /tmp/userbouquet.${BOUQUET}_IpTv.tv | grep "\-\#DESCRIPTION"`

        if [ -n "${FILE_DIFFM}" ] || [ -n "${FILE_DIFFP}" ]; then
            if [ -n "${FILE_DIFFM}" ]; then
                echo ""
                echo "[?] Weggefallen:"
                echo "${FILE_DIFFM}"
                echo ""
            fi
    
            if [ -n "${FILE_DIFFP}" ]; then
                echo ""
                echo "[?] Hinzu gekommen:"
                echo "${FILE_DIFFP}"
                echo ""
            fi
        else
            echo "[?] Keine neuen Sender."
            echo "[+] Fertig."
            rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
            exit 0;
        fi
    fi
        
            
    #Check ob altes IPTV Bouquet vorhanden
    if [ -e "/etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv" ]; then
        echo "[+] Loesche altes IPTV Bouquet."
        rm /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    fi
    
    mv /tmp/userbouquet."${BOUQUET}"_IpTv.tv /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
else
    echo "[!] Download Fehler abbruch!"
    echo "[!] Internet verbindung pruefen!"
    exit 1
fi

#Erstelle neues Bouquet (IPTV Bouquet an Stelle 2)
if ! cat /etc/enigma2/bouquets.tv | grep -c ${BOUQUET} > /dev/null; then
    cat /etc/enigma2/bouquets.tv | sed -n 1,2p > /etc/enigma2/new_bouquets.tv
    echo '#SERVICE 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.'${BOUQUET}'_IpTv.tv" ORDER BY bouquet' >> /etc/enigma2/new_bouquets.tv
    cat /etc/enigma2/bouquets.tv | sed -n '3,$p' >> /etc/enigma2/new_bouquets.tv
    rm /etc/enigma2/bouquets.tv
    echo "[+] Loesche alte Bouquetdatei"
    mv /etc/enigma2/new_bouquets.tv /etc/enigma2/bouquets.tv
    echo "[+] Lege nun die neue Bouquetdatei an"
fi

#Marker umwandeln
echo "[+] Wandel Marker um"
MARKER="0" #Markercounter

for MARKER_LINE in `grep -n '#DESCRIPTION [^A-Za-z0-9].*[A-Za-z0-9].*[^A-Za-z0-9].*' /etc/enigma2/userbouquet.${BOUQUET}_IpTv.tv | cut -d : -f 1`; do
    FUNDZEILEBOUQUET=`expr ${MARKER_LINE} - 1` #Auf Zeile mit Senderdaten setzen in Bouquet
    BOUQUETDATEN=`cat /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv | sed -n "${FUNDZEILEBOUQUET}"p`
    echo ${BOUQUETDATEN} | sed -i "${FUNDZEILEBOUQUET}s/ .*:.*:.*:.*:.*:.*:.*:.*:.*:.*:/ 1:64:${MARKER}:0:0:0:0:0:0:0:/g" /etc/enigma2/userbouquet."${BOUQUET}"_IpTv.tv
    MARKER=`expr ${MARKER} + 1`
done

echo "[+] Lade Bouquet neu"
wget -qO - "http://127.0.0.1/web/servicelistreload?mode=2" >> /tmp/wget_status

WGET_STATUS=`grep "<e2state>True</e2state>" /tmp/wget_status`

if [ -z "${WGET_STATUS}" ]; then
    echo "[-] Bouquet konnte nich neu geladen werden."
    echo "[-] Reciver von Hand neu starten."
    echo "[-] Weiter mit Fehler"
    rm /tmp/wget_status
else
    echo "[+] Bouquet wurde neu geladen."
    rm /tmp/wget_status
fi
echo "[+] Fertig"
rm /tmp/userbouquet.${BOUQUET}_IpTv.tv
exit 0;

Nun Braucht man im Terminal nur eingeben...
Code:
/usr/script/iptv.sh


Ich hoffe das es soweit verständlich ist.
Grüße Teorema
 
Zuletzt bearbeitet:
AW: IPTV Script mit und ohne update Funktion

Könntest du eventuell eine kurze Einleitung zu dem Script schreiben? Was macht das Script genau?
 
Zuletzt bearbeitet:
AW: IPTV Script mit und ohne update Funktion

Dachte (oder habe gehofft) dass die Anleitung oben ausgereicht hätte. Sollte es wirklich noch unverständlich sein, schreibe ich noch eine detaillierte Anleitung.

Das Script mach im Einzelnen:

1. Prüft ob es sich im richtigen Ordner findet.
1.1 Wenn nicht dann verschiebt er sich selbst in /usr/script/iptv.sh.

2. Prüft ob ein crontab angelegt ist.
2.1 Wenn nicht legt er ein Crontab an.

3. Download des IPTV Bouquet's.
3.1 Prüft ob Kanäle hinzugekommen sind oder weggefallen sind und zeigt den unterschied an.

4. Erstellt das neue Bouquet wenn neue Kanäle vorhanden sind.

5. Prüft ob Marker vorhanden sind (---Kanalgruppe--- oder <===Kanalgruppe===> usw.) und wandelt sie entsprechend um.
---> Es werden alle Kanäle in Marker gewandelt die das Schema haben: [Symbole][Buchstaben und Zahlen][Symbole]

6. Bouquet in der Box wird neu geladen.
 
AW: IPTV Script mit und ohne update Funktion

Hallo, ich würde gerne ein script schreiben, das automatisch die m3u mit einer Website abgleicht bzw. Die m3u nach einer bestimmten Zeit automatisch herunterlädt und erneuert. Ist das möglich?
Hoffe ihr wisst was ich meine
 
AW: IPTV Script mit und ohne update Funktion

@Sharky wenn es noch aktuell sein sollte, kann ich dir empfehlen mit Cronjob zu arbeiten! Ist glaub ich sinnvoll bei deinem vorhaben!
 
AW: IPTV Script mit und ohne update Funktion

Ist schon drin. Findest du unter dem Punkt:
#Check ob Crontab vorhanden sonst neuen Crontab erstellen
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben