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
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Bei mir ist momentan noch irgendwo der Wurm drin..
hab .htaccess und .htpasswd erstellt. Den Namen, den ich dort vergeben habe, gebe ich bei der Settings.sh als Benutzername, Passwort an.
Die Settings liegen in /var/www/settings/
Auch das hab ich in der sh eingegeben.
die sh liegt auf der Box in etc/cron/scripts/Settings.sh.
Führe ich die Datei jetzt auf der Box aus, bekomme ich folgendes Resultat:
/bin/sh: /etc/cron/scripts/Settings.sh: not found
Dateiberechtigung liegt auf 755.
Irgendwo hab ich da noch ein Problem, ich glaub das ist eher was für morgen
Muss dann nochmal drüber gehen. Vielleicht mal ohne Passwort probieren.
Ach ja, ich habe die Version vom Startpost genommen.
hm vielleicht mag sh das leerzeichen zwischen dem namen der funktion und () nicht.. hab das mal angepast:
Code:
#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma2 Bouquets. version: 0.72
#
#
# Enigma Version ("enigma1" oder "enigma2")
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.0.10"
# Der Port eures Webservers (standard: 80)
SERVERport="8080"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="ORDNER"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
#
## Ende der Konfiguration
#
#error handling - function
_error () {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
echo -e "\033[1;31;40m $message \033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
exit 1
fi
}
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
TEMPdir=/tmp
URL="$SERVERurl:$SERVERport"
WGETsettings="-q -P$TEMPdir --timeout=15 --wait=5 --tries=3"
if [ ! -z "$USERNAME" ]; then
if [ -z "$PASSWORD" ]; then
_error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
fi
WGETsettings="$WGETsettings --user=$USERNAME --password=\"$PASSWORD\""
fi
#downloaden von time.txt - function
downtimetxt () {
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$ST" ]; then
_error 1 "Es ist ein Fehler aufgetreten (download $ST)"
fi
#Speichern des Inhalts von time.txt in einer Variablen
timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
rm -f $TEMPdir/$ST
}
#Speichern der time.txt in timelu.txt - function
savetimetxt () {
echo "$timen" > /etc/timelu.txt
}
#download and install Bouquets - function
downinstBQ () {
TYPE=$1
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (download $BQ)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$BQ" ]; then
_error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
fi
#datum des bouquets archives
echo "Bouquets Archive wurde erstellt am $(date +"%d.%m.%Y um %H:%m:%S" -r $TEMPdir/$BQ)"
#Entpacken
tar -zxf $BQ
_error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"
#prüfen ob der inhalt des enigma2 archives korrekt ist
if [ "$ENIGMA" = "enigma2" ] && [ ! -f "$TEMPdir/$ENIGMA/satellites.xml" ]; then
_error 1 "Das Archive $BQ entspricht nicht den Anforderungen! ($ENIGMA/satellites.xml nicht vorhanden)"
fi
if [ "$ENIGMA" = "enigma2" ]; then
mv $TEMPdir/$ENIGMA/satellites.xml /etc/tuxbox/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/satellites.xml)"
cd /etc/$ENIGMA
rm -f *.tv
rm -f *.radio
rm -rf blacklist
rm -rf lamedb
mv $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo "Lade Senderliste neu"
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
else
cd /var/tuxbox/config/enigma/
rm -f *.tv
rm -f *.radio
rm -f *.epl
rm -rf bouquets
rm -rf services
rm -rf services.locked
mv /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
echo " "
echo "Starte neu um Bouquets $TYPE wirksam zu machen"
reboot
fi
}
echo "Pruefe ob ein Update der Bouquets noetig ist.."
cd $TEMPdir
#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"
#Downloaden von time.txt vom Server
downtimetxt
#Vergleich: Ist timelu kleiner als timen?
if [ $timelu -lt $timen ]; then
echo "Update vorhanden - Starte Update"
echo " "
#download and update bouquets
downinstBQ Update
else
#Timen ist kleiner oder gleich groß wie timelu
echo -n "Senderliste aktuell."
echo -e "\033[1;32;40m Kein Update noetig \033[0m"
fi
else
#Downloaden von time.txt vom Server
downtimetxt
#download and install bouquets
echo "Starte Bouquets Install"
echo " "
downinstBQ Install
fi
exit 0
aber die dateien liegen doch in einem bestimmten verzeichnis oder?
wenn ja kann man über ein script den benutzer bei jedem einzelnen file fragen ob es dem archive hinzugefügt werden soll, dann kann man sich wie gesagt das umwandeln über ein extra programm usw sparen.
theoretisch liese sich das auch allgemein mehr automatisieren, archive erstellen & hochladen & time.txt anpassen
heissen die dateien immer je nach Bouquets-Art (Sat, Kabel usw) unterschiedlich oder wonach richtet sich das?
in der .htpasswd sind die zugangsdaten hinterlegt.
in deinem ersten post hast du jegendlich das erstellen der .htaccess aufgeführt
aber in der .htaccess wird jegendlich die konfiguration vorgekommen wie zum beispiel wo die datei mit den zugangsdaten (loginassword) zu finden ist (AuthUserFile /var/htpasswd)
aber vorallem muss die .htaccess auch in das verzeichnis das geschützt werden soll!
wenn er die enigma2.tar.gz im /var/www/settings/ liegen hat, muss die .htaccess also auch in das verzeichnis /var/www/settings/
und dadurch ergibt sich auch dass der user/password schutz von ipc dadurch nicht beeinflusst wird da der sich auf /var/www/ipc/ bezieht.. zwar liegt durch IPC bereits eine .htaccess datei in /var/www/ aber die regelt etwas anderes (andere einstellungen, aber nichts "Authorization required" relevantes)
deine beschreibungen im ersten post sind aber auch immer noch etwas verwirrend
zum beispiel:
da steht nichts von "file". man muss ein linux aber auch nicht neu starten nur weil man ein shell script eingerichtet hat..
das einfachste wäre wenn er copy&past von dem macht was er eingibt und was dann als fehlermeldung kommt. ansonsten das script mit debug ausgabe starten: sh -x /etc/cron/scripts/Settings.sh
dann sieht man vielleicht bei was "not found" auftritt
dann würde da aber normalerweise sowas ähnliches wie:
-sh: /etc/cron/scripts/Settings.sh: file not found
oder
-bash: /etc/cron/scripts/Settings.sh: file not found
stehen..
kannst du ganz einfach mal selber testen in dem du auf irgendeiner linux konsole (oder deinem receiver) " /etc/cron/scripts/Settings.sh " eingibst und auszuführen versuchst
ich bin mir aber ziemlich sicher das nicht das script-file "not found" wurde sondern etwas anderes - das könnte zum beispiel auch schon an ungültigen zeielnumbruch zeichen liegen wenn er das script mit notepad erstellt hat (dann ist das format der datei nicht linux-kompatible)
hm vielleicht mag sh das leerzeichen zwischen dem namen der funktion und () nicht.. hab das mal angepast:
Code:
#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma2 Bouquets. version: 0.71
#
#
# Enigma Version ("enigma1" oder "enigma2")
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.0.10"
# Der Port eures Webservers (standard: 80)
SERVERport="8080"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="ORDNER"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
#
## Ende der Konfiguration
#
#error handling
function _error() {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
echo -e "\033[1;31;40m $message \033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
exit 1
fi
}
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
TEMPdir=/tmp
URL="$SERVERurl:$SERVERport"
WGETsettings="-q -P$TEMPdir --timeout=15 --wait=5 --tries=3"
if [ ! -z "$USERNAME" ]; then
if [ -z "$PASSWORD" ]; then
_error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
fi
WGETsettings="$WGETsettings --user=$USERNAME --password=\"$PASSWORD\""
fi
#downloaden von time.txt
function downtimetxt() {
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$ST" ]; then
_error 1 "Es ist ein Fehler aufgetreten (download $ST)"
fi
#Speichern des Inhalts von time.txt in einer Variablen
timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
rm -f $TEMPdir/$ST
}
#Speichern der time.txt in timelu.txt
function savetimetxt() {
echo "$timen" > /etc/timelu.txt
}
#download and install Bouquets
function downinstBQ() {
TYPE=$1
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (download $BQ)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$BQ" ]; then
_error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
fi
#datum des bouquets archives
echo "Bouquets Archive wurde erstellt am $(date +"%d.%m.%Y um %H:%m:%S" -r $TEMPdir/$BQ)"
#Entpacken
tar -zxf $BQ
_error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"
#prüfen ob der inhalt des enigma2 archives korrekt ist
if [ "$ENIGMA" = "enigma2" ] && [ ! -f "$TEMPdir/$ENIGMA/satellites.xml" ]; then
_error 1 "Das Archive $BQ entspricht nicht den Anforderungen! ($ENIGMA/satellites.xml nicht vorhanden)"
fi
if [ "$ENIGMA" = "enigma2" ]; then
mv $TEMPdir/$ENIGMA/satellites.xml /etc/tuxbox/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/satellites.xml)"
cd /etc/$ENIGMA
rm -f *.tv
rm -f *.radio
rm -rf blacklist
rm -rf lamedb
mv $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo "Lade Senderliste neu"
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
else
cd /var/tuxbox/config/enigma/
rm -f *.tv
rm -f *.radio
rm -f *.epl
rm -rf bouquets
rm -rf services
rm -rf services.locked
mv /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
echo " "
echo "Starte neu um Bouquets $TYPE wirksam zu machen"
reboot
fi
}
echo "Pruefe ob ein Update der Bouquets noetig ist.."
cd $TEMPdir
#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"
#Downloaden von time.txt vom Server
downtimetxt
#Vergleich: Ist timelu kleiner als timen?
if [ $timelu -lt $timen ]; then
echo "Update vorhanden - Starte Update"
echo " "
#download and update bouquets
downinstBQ Update
else
#Timen ist kleiner oder gleich groß wie timelu
echo -n "Senderliste aktuell."
echo -e "\033[1;32;40m Kein Update noetig \033[0m"
fi
else
#Downloaden von time.txt vom Server
downtimetxt
#download and install bouquets
echo "Starte Bouquets Install"
echo " "
downinstBQ Install
fi
exit 0
Genau so ist es
Das Problem sind die Funktionen, denn bei dir sehen bei dir mal so mal so aus:
Code:
Falsch:
function _error()
function downtimetxt()
Richtig:
function_error()
function_downtimetxt()
Code:
Aufruf der Funktion dann so:
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
_downtimetxt
Hier haste mal dein Script angepasst:
Code:
#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma2 Bouquets. version: 0.71
#
#
# Enigma Version ("enigma1" oder "enigma2")
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.0.10"
# Der Port eures Webservers (standard: 80)
SERVERport="8080"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="ORDNER"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
#
## Ende der Konfiguration
#
#error handling
function_error() {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
echo -e "\033[1;31;40m $message \033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
exit 1
fi
}
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
TEMPdir=/tmp
URL="$SERVERurl:$SERVERport"
WGETsettings="-q -P$TEMPdir --timeout=15 --wait=5 --tries=3"
if [ ! -z "$USERNAME" ]; then
if [ -z "$PASSWORD" ]; then
_error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
fi
WGETsettings="$WGETsettings --user=$USERNAME --password=\"$PASSWORD\""
fi
#downloaden von time.txt
function_downtimetxt() {
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$ST" ]; then
_error 1 "Es ist ein Fehler aufgetreten (download $ST)"
fi
#Speichern des Inhalts von time.txt in einer Variablen
timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
rm -f $TEMPdir/$ST
}
#Speichern der time.txt in timelu.txt
function_savetimetxt() {
echo "$timen" > /etc/timelu.txt
}
#download and install Bouquets
function_downinstBQ() {
TYPE=$1
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (download $BQ)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$BQ" ]; then
_error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
fi
#datum des bouquets archives
echo "Bouquets Archive wurde erstellt am $(date +"%d.%m.%Y um %H:%m:%S" -r $TEMPdir/$BQ)"
#Entpacken
tar -zxf $BQ
_error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"
#prüfen ob der inhalt des enigma2 archives korrekt ist
if [ "$ENIGMA" = "enigma2" ] && [ ! -f "$TEMPdir/$ENIGMA/satellites.xml" ]; then
_error 1 "Das Archive $BQ entspricht nicht den Anforderungen! ($ENIGMA/satellites.xml nicht vorhanden)"
fi
if [ "$ENIGMA" = "enigma2" ]; then
mv $TEMPdir/$ENIGMA/satellites.xml /etc/tuxbox/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/satellites.xml)"
cd /etc/$ENIGMA
rm -f *.tv
rm -f *.radio
rm -rf blacklist
rm -rf lamedb
mv $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
_savetimetxt
echo "Lade Senderliste neu"
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
else
cd /var/tuxbox/config/enigma/
rm -f *.tv
rm -f *.radio
rm -f *.epl
rm -rf bouquets
rm -rf services
rm -rf services.locked
mv /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
_savetimetxt
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
echo " "
echo "Starte neu um Bouquets $TYPE wirksam zu machen"
reboot
fi
}
echo "Pruefe ob ein Update der Bouquets noetig ist.."
cd $TEMPdir
#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"
#Downloaden von time.txt vom Server
_downtimetxt
#Vergleich: Ist timelu kleiner als timen?
if [ $timelu -lt $timen ]; then
echo "Update vorhanden - Starte Update"
echo " "
#download and update bouquets
_downinstBQ Update
else
#Timen ist kleiner oder gleich groß wie timelu
echo -n "Senderliste aktuell."
echo -e "\033[1;32;40m Kein Update noetig \033[0m"
fi
else
#Downloaden von time.txt vom Server
_downtimetxt
#download and install bouquets
echo "Starte Bouquets Install"
echo " "
_downinstBQ Install
fi
exit 0
Das Script läuft nun fast durch ....
Die Dream sagt:
Code:
[B]
line 188: _error not found
line 188: _downtime.txt not found
[/B]
aber die dateien liegen doch in einem bestimmten verzeichnis oder?
wenn ja kann man über ein script den benutzer bei jedem einzelnen file fragen ob es dem archive hinzugefügt werden soll, dann kann man sich wie gesagt das umwandeln über ein extra programm usw sparen.
theoretisch liese sich das auch allgemein mehr automatisieren, archive erstellen & hochladen & time.txt anpassen
heissen die dateien immer je nach Bouquets-Art (Sat, Kabel usw) unterschiedlich oder wonach richtet sich das?
was sind function's?
im prinzip selbst deklarierte befehle
Functions enable you to break down the overall functionality of a script into smaller, logical subsections, which can then be called upon to perform their individual task when it is needed.
Using functions to perform repetitive tasks is an excellent way to create code reuse. Code reuse is an important part of modern object-oriented programming principles.
Shell functions are similar to subroutines, procedures, and functions in other programming languages.
" function_error() " wird nicht funktionieren da der name des commands dann " function_error " lautet aber nicht mehr " _error " und somit kann man weiter unten im script auch keinen befehl " _error " mehr aufrufen..
siehe oben.. einen befehl names "_error" gibt es in deinem abgeänderten script ja auch nicht mehr. bei dir lautet er nun "function_error"
allerdings weiss ich absolut nicht wo nun " _downtime.txt " her kommt und das auch noch in der selben zeile wie _error?
edit:
habe alle meine scripts noch mal rückwirkend angepasst..
bei " function _error () { " ist für /bin/sh anscheint " function " zu viel also mit " _error () { " funktioniert es nun
edit2:
habe das script nochmals überarbeitet. ENIGMA wird nun automatisch ermittelt sofern die einstellung leer ( "" ) ist
v0.82
Code:
#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 0.82
#
#
# Enigma Version ("enigma1" oder "enigma2"). wird versucht automatisch zu ermitteln falls leer
ENIGMA=""
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.0.10"
# Der Port eures Webservers (standard: 80)
SERVERport="8080"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="ORDNER"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
#
## Ende der Konfiguration
#
TEMPdir=/tmp
URL="$SERVERurl:$SERVERport"
WGETsettings="-q -P$TEMPdir"
#- functions
#error handling
_error () {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
echo -e "\033[1;31;40m $message \033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
exit 1
fi
}
#downloaden von time.txt
downtimetxt () {
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$ST" ]; then
_error 1 "Es ist ein Fehler aufgetreten (download $ST)"
fi
#Speichern des Inhalts von time.txt in einer Variablen
timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
rm -f $TEMPdir/$ST
}
#Speichern der time.txt in timelu.txt
savetimetxt () {
echo "$timen" > /etc/timelu.txt
}
#download and install Bouquets
downinstBQ () {
TYPE=$1
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (download $BQ)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$BQ" ]; then
_error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
fi
#datum des bouquets archives
echo "Bouquets Archive wurde erstellt am $(date +"%d.%m.%Y um %H:%m:%S" -r $TEMPdir/$BQ)"
#Entpacken
tar -zxf $BQ
_error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"
#prüfen ob der inhalt des enigma2 archives korrekt ist
if [ "$ENIGMA" = "enigma2" ] && [ ! -f "$TEMPdir/$ENIGMA/satellites.xml" ]; then
_error 1 "Das Archive $BQ entspricht nicht den Anforderungen! ($ENIGMA/satellites.xml nicht vorhanden)"
fi
if [ "$ENIGMA" = "enigma2" ]; then
mv $TEMPdir/$ENIGMA/satellites.xml /etc/tuxbox/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/satellites.xml)"
cd /etc/$ENIGMA
rm -f *.tv
rm -f *.radio
rm -rf blacklist
rm -rf lamedb
mv $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo "Lade Senderliste neu"
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
else
cd /var/tuxbox/config/enigma/
rm -f *.tv
rm -f *.radio
rm -f *.epl
rm -rf bouquets
rm -rf services
rm -rf services.locked
mv /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$BQ
#Speichern der time.txt in timelu.txt
savetimetxt
echo " "
echo -e "\033[1;32;40m Bouquets $TYPE erfolgreich abgeschlossen \033[0m"
echo " "
echo "Starte neu um Bouquets $TYPE wirksam zu machen"
reboot
fi
}
#- main code
#falls ENIGMA leer -> versuche ENIGMA version zu ermitteln
if [ -z "$ENIGMA" ]; then
[ -d "/etc/enigma2/" ] && ENIGMA="enigma2"
[ -d "/var/tuxbox/config/enigma/" ] && ENIGMA="enigma1"
if [ -z "$ENIGMA" ]; then
_error 1 "Kann die ENIGMA Version nicht ermitteln! Bitte manuell im Script festlegen!"
fi
else
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
fi
if [ ! -z "$USERNAME" ]; then
if [ -z "$PASSWORD" ]; then
_error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
fi
WGETsettings="$WGETsettings --user=$USERNAME --password=\"$PASSWORD\""
fi
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
echo "Pruefe ob ein Update der Bouquets noetig ist.."
cd $TEMPdir
#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"
#Downloaden von time.txt vom Server
downtimetxt
#Vergleich: Ist timelu kleiner als timen?
if [ $timelu -lt $timen ]; then
echo "Update vorhanden - Starte Update"
echo " "
#download and update bouquets
downinstBQ Update
else
#Timen ist kleiner oder gleich groß wie timelu
echo -n "Senderliste aktuell."
echo -e "\033[1;32;40m Kein Update noetig \033[0m"
fi
else
#Downloaden von time.txt vom Server
downtimetxt
#download and install bouquets
echo "Starte Bouquets Install"
echo " "
downinstBQ Install
fi
exit 0
So bin heute mal dazu gekommen das ganze zu testen..
Bin wie folgt vorgegangen ..
Meine Settings in enigma2.tar.gz gepackt und auf meinem Igel mit Debian in /var/www/Settings geschoben, dabei die Datei time.txt mit 20130715 erstellt,
Dann das v0.8 vom 0800555333 auf meine DM800se mit Gemini in /etc/cron/scripts (Verzeichniss scripts musste ich erstellen) geschoben und Rechte auf 755 gesetzt, und in /etc/ eine timelu.txt mit 19700101 erstellt..
Wenn ich dann mit den Dateibrowser Settings.sh ausführe bekomme ich in der Console folgende Ausgabe:
Ausführen eines externen Befehls:
/bin/sh: /etc/cron/scripts/Settings.sh: not found
Ausführung beendet!
Das Script hab ich so angepasst:
Code:
# Enigma Version ("enigma1" oder "enigma2"). wird versucht automatisch zu ermitteln falls leerENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.1.59"
# Der Port eures Webservers (standard: 80)
SERVERport="80"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="Settings"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
Habe meinen Fehler gefunden. Es lag wohl daran, das die sh in DOS Dateityp vorlag. Ich habe die dann in UNIX konvertiert. Jetzt kann ich das Script ausführen. Danke für den entscheidenden Tipp!
Jetzt habe ich noch folgendes Problem: Es funktioniert irgendwie nur, wenn ich mit Port 80 arbeite. Sobald ich den ändere, komm ich nicht an meine Datei..
gebe ich im Browser dann folgendes ein: IP/Settings/enigma2.tar.gz komm ich an diese Datei, obwohl in dem Ordner die .htpasswd und .htaccess Dateinen vorhanden sind.
Das Script aus dem Startpost von Amassidda läuft bei mir durch.
Allerdings kommt da als Fehler:
tar: invalid number ' 10010 '
/usr/script/Settings.sh: cd: line 63: can't cd to /tmp/enigma2
mv: cannot rename '/tmp/enigma2/satellites.xml': No such file or directory
mv: cannot rename '/tmp/enigma2/*': No such file or directory
Lade Senderliste neu
<?xml version="1.0" encoding="UTF-8"?>
...
Danach waren alle Favoriten in der Box gelöscht..
Das Script von 0800555333 krieg ich irgendwie nicht zum laufen:
Pruefe ob ein Update der Bouquets noetig ist..
wget: unrecognized option '--timeout=15'
BusyBox v1.15.3 (2012-12-09 13:15:55 CET) multi-call binary
Options:
-s Spider mode - only check file existence
-c Continue retrieval of aborted transfer
-q Quiet
-P Set directory prefix to DIR
-O Save to filename ('-' for stdout)
-U Adjust 'User-Agent' field
-Y Use proxy ('on' or 'off')
Es ist ein Fehler aufgetreten (download time.txt)
Abbruch
Ich bleib am Ball
Ich bin das ganze bei einer vu+ solo am Testen mit VTI image.
EDIT: @UncleC:
Vor dem Problem habe ich Anfangs auch gestanden, (Post 46).
Habe dann wie von 0800555333 beschrieben, geschaut, was für ein Dateisystem die sh ist. Diese habe ich von DOS nach UNIX geändert. Jetzt kann ich das Script ausführen
Wenn ich dann mit den Dateibrowser Settings.sh ausführe bekomme ich in der Console folgende Ausgabe:
Ausführen eines externen Befehls:
/bin/sh: /etc/cron/scripts/Settings.sh: not found
Ausführung beendet!
# Enigma Version ("enigma1" oder "enigma2"). wird versucht automatisch zu ermitteln falls leerENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.1.59"
# Der Port eures Webservers (standard: 80)
SERVERport="80"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="Settings"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
Danke Jonny, funktioniert..
Bekomme aber (mit dem Script vom 0800555333)
Die selbe ausgabe wie du, also Es ist ein Fehler aufgetreten (download time.txt) Der Pfad muss aber stimmten, via Browser kann ich auf die time.txt zugreifen
Sry, 0800555333
Sry hab dein Poste jetzt erst gesehen, wir haben zur gleichen zeit geschrieben
Ja war ein Copy & Paste Fehler, Enigma="enigma2" steht in einer neuen Zeile..
Das bearbeiten der zeiler 37 hat geholfen, bekomm jetzt den Hinweis das sattelites.xml nicht vorhanden sei, ist aber 100 pro im Archiv..
Hab nochmal einen Screenshot von der Ausgabe und dem Archiv gemacht
Allerdings krieg ich die tar.gz datei nicht entpackt..
Bouquets Archive wurde erstellt am 15.07.2013 um 15:07:46
tar: invalid number ' 10014 '
Es ist ein Fehler aufgetreten (entpacken enigma2.tar.gz)
Abbruch
Eine Settings tar.gz habe ich mit der VU+ gemacht, die kann ich auch wieder entpacken. Die von mir am PC erstellten tar.gz funktionieren nicht.
Wie habt ihr die am PC erstellt? habe Izarc und 7zip probiert.
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach einem Login angemeldet zu halten, wenn du registriert bist.
Durch die weitere Nutzung unserer Webseite erklärst du dich damit einverstanden.
Das Digital Eliteboard ist ein kostenloses Forum und ist auf Spenden angewiesen, um sich auch in Zukunft selbst zu finanzieren. Wenn auch du mit dem Digital Eliteboard zufrieden bist, würden wir uns über jede Unterstützung freuen.