Automatischer Reboot unter unstable OE2.0 (gelöst)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Automatischer Reboot unter unstable OE2.0 (gelöst)

      Automatischer kompletter Reboot ohne Verlust der EPG Daten zu einem regelmäßigen Zeitpunkt .
      Die angehängte Datei enthält alle nötigen Dateien, die ihr per FTP in die vorgegeben Verzeichnisse
      auf eure Box kopiert und anschließend mit den Dateirechten 755 verseht und anschießend die Box
      neu startet.
      Für persönliche Anpassungen in den Dateien, muss man einen Linux tauglichen Editor verwenden.
      Der Zeitpunkt kann in der Datei /etc/cron/crontabs/root geändert werden, voreingestellt ist täglich
      um 03:00, Infos zur Zeitpunktbestimmung mit cron findet ihr hier:
      de.wikipedia.org/wiki/Cron
      Berücksichtigt wird eine begonnene Timeraufnahme, dann verschiebt sich der geplante Reboot um
      jeweils 15min, das kann in der Datei /usr/script/daily_reboot.sh in Zeile 13 geändert werden.
      Wer in einen anderen Zustand, als wie hier vorgegeben in den Standby, booten mag, kann das in der
      Datei /usr/script/go_to_standby_after_daily_reboot.sh in Zeile 27 einfach ändern.
      0 = Toogle Standby
      1 = Deepstandby
      2 = Reboot
      3 = Restart Enigma2
      4 = Wakeup form Standby
      5 = Standby
      Die Scripte wurden unter Newenigma2 unstable OE2.0 erfolgreich mit DM8000 und 7020HD
      getestet.
      Vielen Dank noch mal an Fred Bogus Trumper hier aus dem Newenigma2 Forum, der bei meiner
      Verwirklichung des ganzen, mehr als nur geholfen hat ;)
      Dateien

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von Septemberregen ()

    • RE: Cron Plugin/Script für unstable OE2.0

      das mit daily reboot und laufenden Aufnahme prüfen ist kein Problem, eher das prüfen, ob eine Timeraufnahme bevorsteht. Soweit ich weiß, gibt es ein paar Plugins die das können, elektro powersave glaube ich


      wenn du das dennoch selber lösen willst, könnte das per script ein Ansatz sein:

      das script läuft solange in einer Schleife und wartet 15 minuten, bis keine Aufnahme mehr läuft: RECORDING=false (egal ob Timer- oder Sofortaufnahme) und macht dann einen Reboot

      /usr/script/daily_reboot.sh

      Shell-Script

      1. #!/bin/sh
      2. PATH=/sbin:/usr/sbin:/bin:/usr/bin
      3. RECORDING=true
      4. until [ $RECORDING == false ]
      5. do
      6. #pruefen, ob eine Aufnahme laeuft
      7. if [ $(wget -O- -q http://127.0.0.1/web/timerlist | grep "<e2state>2</e2state>" | grep -cm 1 "2") = 1 ]; then
      8. RECORDING=true
      9. echo "laufende Aufnahme, warte 15 Minuten"
      10. # 15 Mintuen warten ( = 900 Sekunden)
      11. sleep 900
      12. else
      13. RECORDING=false
      14. fi
      15. done
      16. echo "keine laufende Aufnahme -> reboot"
      17. #Box rebooten, EPG bleibt erhalten
      18. wget -q -O - http://127.0.0.1/web/powerstate?newstate=2
      19. exit
      Alles anzeigen


      man könnte per script auch noch prüfen, ob eine Timeraufnahme innerhalb der nächsten 5 Minuten startet, wenn ja, dann mit dem Reboot warten. Aber das wird dann etwas komplizierter ...

      ich würde dann auch nächtliche Aufnahmen mit einer 4-5 Vorlaufzeit programmieren, damit die Box keinen Reboot macht, wenn eine Aufnahme "vorzeitig" läuft bzw. nach reboot rechtzeitig zur eigentlichen EPG Beginnzeit wieder hochkommt (dann macht es nichts, wenn ein, zwei Minuten am Anfang der Aufnahme fehlen)

      dann noch per cron täglich ausführen lassen

      damit die Box nach reboot in Standby geht, das plugin enigma2-plugin-extensions-startuptostandby istallieren und aktivieren. Aber dann geht die Box auch aber nach jedem GUI Neustart in Standby, wenn ich mich richtig erinnere

      aber auch das könnte man per 2. script erledigen lassen, dass die Box nur nach ausführen der script/daily_reboot.sh in Standby geht, nicht jedoch nach GUI Restart oder manuellem Reboot
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Fred Bogus Trumper ()

    • kannst du das mal checken:

      ich habs mal in in reb.sh umbenannt und in /etc/cron geschoben und per telnet gestartet, beokomm aber 3 fehlermeldungen

      2 not found

      4 not found

      und was mit unaspecktet fi


      hab zwar jetzt bissi über linux schleifen gelesen aber bekomms nicht hin...

      LOG:


      *****************************
      * newnigma2.to *
      *****************************
      * the next step is done *
      *****************************

      opendreambox 2.0.0 dm8000


      dm8000 login: root
      root@dm8000:~# sh -v /etc/cron/reb.sh
      #!/bin/sh

      : not foundeb.sh: line 2:
      PATH=/sbin:/usr/sbin:/bin:/usr/bin

      : not foundeb.sh: line 4:
      RECORDING=true
      until [ $RECORDING == false ]
      do
      #pruefen, ob eine Aufnahme laeuft
      if [ $(wget -O- -q 127.0.0.1/web/timerlist | grep "<e2state>2</e2state>
      " | grep -cm 1 "2") = 1 ]; then
      RECORDING=true
      echo "laufende Aufnahme, warte 15 Minuten"
      # 15 Mintuen warten ( = 900 Sekunden)
      sleep 900
      else
      RECORDING=false
      fi
      done

      echo "keine laufende Aufnahme -> reboot"
      #Box rebooten, EPG bleibt erhalten
      wget -q -O - 127.0.0.1/web/powerstate?newstate=2
      exit/etc/cron/reb.sh: line 22: syntax error: unexpected end of file (expecting "
      fi")
      root@dm8000:~#

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Septemberregen ()

    • hier funktioniert das einwandfrei (fast aktuelles unstable 4.0 beta), hab nur mal den Reboot Befehl rausgenommen und und die Schleife auf 3 Sekunden gekürzt und bei laufendener Sofortaufnahme gestartet:

      Quellcode

      1. root@dm800se:~# sh -v /usr/script/daily_reboot.sh
      2. #!/bin/sh
      3. PATH=/sbin:/usr/sbin:/bin:/usr/bin
      4. RECORDING=true
      5. until [ $RECORDING == false ]
      6. do
      7. #pruefen, ob eine Aufnahme laeuft
      8. if [ $(wget -O- -q http://127.0.0.1/web/timerlist | grep "<e2state>2</e2state>" | grep -cm 1 "2") = 1 ]; then
      9. RECORDING=true
      10. echo "laufende Aufnahme, warte 3 Sekunden"
      11. # 15 Mintuen warten ( = 900 Sekunden)
      12. sleep 3 ## 900
      13. else
      14. RECORDING=false
      15. fi
      16. done
      17. laufende Aufnahme, warte 3 Sekunden
      18. laufende Aufnahme, warte 3 Sekunden
      19. laufende Aufnahme, warte 3 Sekunden
      20. laufende Aufnahme, warte 3 Sekunden
      21. laufende Aufnahme, warte 3 Sekunden
      22. echo "no active recording -> reboot"
      23. no active recording -> reboot
      24. #Box rebooten, EPG bleibt erhalten
      25. #### reboot Befehl deaktiviert
      26. #wget -q -O - http://127.0.0.1/web/powerstate?newstate=2
      27. exit
      28. root@dm800se:~#
      Alles anzeigen


      schätze da ist was bei der Scripterstellung daneben gegangen - Linuxkombatibler Editor?

      Quellcode

      1. if [ $(wget -O- -q http://127.0.0.1/web/timerlist | grep "<e2state>2</e2state>
      2. " | grep -cm 1 "2") = 1 ]; then


      ist das ein Zeilenumbruch im script oder ein copy&paste Ergebnis? da darf kein Zeilenumbruch sein!

      ich häng dir mal das script an - Rechte 755 vergeben


      um das script per cron zu starten, entweder cron vom feed nachinstallieren, oder das in der busybox eingebaute busybox-cron verwenen, das funktioniert im OE2.0 wieder (im OE1.6 nicht ohne einen manuellen bugfix!)

      Crontab erstellen:

      crontab -e
      i # mit der Taste i in den Bearbeitungsmodus wechseln
      30 4 * * * /usr/script/daily_reboot.sh
      <ESC> # mit ESC in den Befehlsmodus
      :wq <ENTER>


      wq speichert die Änderung, :!q verlässt den Editor vi ohne zu speichern

      du kannst auch die Datei /etc/cron/crontabs/root mit einem Linuxeditor erstellen

      crontab anzeigen und busybox-cron neu starten bzw. erstmalig starten, wenn vorher nicht aktivert

      Quellcode

      1. root@dm800se:~# crontab -l
      2. 30 4 * * * /usr/script/daily_reboot.sh
      3. root@dm800se:~# /etc/init.d/busybox-cron start
      4. starting Busybox Periodic Command Scheduler: crond... done.
      5. root@dm800se:~#
      Dateien
      • daily_reboot.zip

        (462 Byte, 538 mal heruntergeladen, zuletzt: )
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fred Bogus Trumper ()

    • danke, das aus deinem anhang geht, muss echt was beim file erstellen (mit ultraedit) schief gelaufen sein, ich teste jetzt mal bissi, dann kommen sicher mehr fragen (-:

      das mit dem in den standby gehen nur bei neustart über script wäre noch klasse ! (-: !
    • das kann man so realisieren:

      vor dem Reboot ein controlfile mit daily_reboot.sh erstellen

      Quellcode

      1. .
      2. .
      3. .
      4. .
      5. # erstelle controllfile
      6. touch /home/root/daily_reboot.done
      7. echo "keine laufende Aufnahme -> reboot"
      8. #Box rebooten, EPG bleibt erhalten
      9. wget -q -O - http://127.0.0.1/web/powerstate?newstate=2
      10. exit
      Alles anzeigen


      dann erstelle ich das script /etc/rc3.d/S99user_bootup.sh (Rechte 755) - das wird dann beim bootup einmalig ausgeführt, S99 bedeutet, dass es ganz am Ende des Linuxstarts ausgeführt wird, aber bevor Enigma2 gestartet wird, deshalb muss der Standby Befehl erst mit Verzögerung ausgeführt werden. Das erreicht man, in dem man prüft, ob das Web-Interface erreichbar ist. Wenn ja -> Standby

      in die /etc/rc3.d/S99user_bootup.sh kann man alle möglichen individuellen Scripte starten lassen oder Befehle ausführen - funktioniert im Grunde wie die /etc/rc.local in debian, ubuntu usw.

      /etc/rc3.d/S99user_bootup.sh

      Shell-Script

      1. #!/bin/sh
      2. # fuehrt Befehle, Scripte beim bootup vor Enigma2 Start aus
      3. PATH=/sbin:/usr/sbin:/bin:/usr/bin
      4. # Standbyscript ausfueren
      5. # WICHTIG! das '&' am Ende nicht vergessen
      6. # fuehrt den Befehl im Hintergrund aus, damit der Enigma2 Start nicht verzoegert wird
      7. /usr/script/go_to_standby_after_daily_reboot.sh &
      8. # hier koennen weitere Befehle ausgefuehrt oder Scripte gestartet werden
      9. exit
      Alles anzeigen


      /usr/script/go_to_standby_after_daily_reboot.sh

      HTML-Quellcode

      1. #!/bin/sh
      2. # Wenn CONTROLFILE existiert, geht die Box nach Bootup in Standby und loescht
      3. # das CONTROLFILE, nach GUI-Neutstart oder manuellem Reboot geht die Box nicht
      4. # automatisch in Standby
      5. CONTROLFILE=/home/root/daily_reboot.done
      6. if [ -e $CONTROLFILE ] ; then
      7. WEBIF=false
      8. until [ $WEBIF == true ]
      9. do
      10. #pruefen, ob das Web-Interface erreichbar ist
      11. if [ $( wget -q -O- http://127.0.0.1 | grep -c "<html>") = 0 ]; then
      12. WEBIF=false
      13. echo "Web-Interface nicht erreichbar"
      14. # 10 Sekunden warten
      15. sleep 10
      16. else
      17. echo "Web-Interface erreichbar"
      18. WEBIF=true
      19. fi
      20. done
      21. # Box in Standby schicken
      22. echo "Sende Standby Befehl"
      23. wget -q -O - http://127.0.0.1/web/powerstate?newstate=5
      24. # Controlfile loeschen
      25. rm $CONTROLFILE
      26. else
      27. echo "$CONTROLFILE nicht gefunden - kein Standby!"
      28. fi
      29. exit
      Alles anzeigen


      nach manuellen Reboot oder GUI Neustart geht die Box nicht in Standby
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Fred Bogus Trumper ()

    • Danke werd ich testen sobald ich an die box kann (-:

      ich werd dann im ersten beitrag vorne die ergebnisse und den einfachsten weg wie man es zum laufen bekommt posten, dann hat jeder was davon, als ich am suchen war hab ich einiges an solchen anfragen im web gefunden, oft ohne oder ohne gescheiten lösungsansatz...

      Danke
    • So Fred, ich hoffe dir gefällt mein kleines HowTo...

      Ich hät schon wieder ne Frage, kann man relativ einfach, also durch kopieren einer oder mehrere vorgefertigten Dateien, diesen Bootvorgang, also die ausführung des Script daily_reboot.sh, als menüpunkt in den erweiterungen hinbekommen ?
    • Original von Septemberregen
      So Fred, ich hoffe dir gefällt mein kleines HowTo...?


      dir muss es gefallen ;)
      wenn es anderen usern hilft umso besser ...

      Original von Septemberregen
      Ich hät schon wieder ne Frage, kann man relativ einfach, also durch kopieren einer oder mehrere vorgefertigten Dateien, diesen Bootvorgang, also die ausführung des Script daily_reboot.sh, als menüpunkt in den erweiterungen hinbekommen ?


      ja, das lässt sich relativ einfach realisieren. Das sind nur ein paar python code zeilen (was leider nicht ganz mein Spezial Gebiet ist). Aber wenn du willst backe ich dir ein .ipk mit allen scripten (ausser dem crontab) - aber erst morgen ...
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fred Bogus Trumper ()

    • das hast du missverstanden, ich meinte im Kommentar eigentlich, dass das EPG erhalten bleibt, wenn man mit dem Befehl

      Quellcode

      1. wget -q -O - http://127.0.0.1/web/powerstate?newstate=2
      über Enigma2 rebootet, weil so Enigma2 sauber runtergefahren wird und die epg.dat geschrieben wird. d.h. nach Reboot hat man wieder ein befülltes EPG, weil die epg.dat beim Hochfahren wieder eingelesen wird. Funktioniert sozusagen wie der Reboot über die FB.

      der Befehl rebootet die Box über das Enigma2 Web-Interface

      Macht man den Neutstart mit reboot oder shutdown -r now usw. ziehst du Enigma2 sozusagen das Linux unter den Beinen im laufenden Betrieb weg, die epg.dat wird nicht geschrieben und das EPG bleibt nach reboot leer ...




      PS:
      Hatte noch keine Zeit für das Plugin ..
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      ¯\_(ツ)_/¯

      Quellcode

      1. root@dm920:~$ mount | grep "/ "
      2. /dev/mmcblk1p1 on / type ext4 (rw,relatime,data=ordered)
      3. root@dm920:~$

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Fred Bogus Trumper ()

    • @Fred,

      besten Dank :prost:

      Das Thema liegt zwar schon längere Zeit zurück, aber es ist genau das, was ich heute gesucht habe. Ich habe die Skripte für meine Bedürfnisse angepasst und hänge diese hier an, hoffe du hast nichts dagegen.


      Täglicher Reboot einer Box um 5.50 Uhr. Die Box wird nachdem Reboot ins Standby versetzt.

      Geplante Aufnahmen oder ähnliches zur Reboot-Zeit werden nicht berücksichtigt!

      user_boot.sh

      Shell-Script

      1. #!/bin/sh
      2. # ##########################################################
      3. # OWNER: Fred Bogus Trumper --> http://board.newnigma2.to/wbb3/index.php?page=User&userID=5112
      4. # SOURCE: http://board.newnigma2.to/wbb3/index.php?page=Thread&postID=154421&highlight=cron+reboot#post154421
      5. # DESC: Fuehrt Befehle, Scripte beim bootup vor Enigma2 Start aus
      6. #
      7. # INSTALL:
      8. # copy this file to: /usr/script/user_boot.sh
      9. # chmod this file: chmod 0755 /usr/script/user_boot.sh
      10. # create a symlink: ln -s /usr/script/user_boot.sh /etc/rc3.d/S99user_boot.sh
      11. # ##########################################################
      12. /usr/script/standby_after_daily_reboot.sh &
      13. exit 0
      Alles anzeigen



      daily_reboot.sh

      HTML-Quellcode

      1. #!/bin/sh
      2. # ##########################################################
      3. # INSTALL:
      4. # copy this file to: /usr/script/daily_reboot.sh
      5. # chmod this file: chmod 0755 /usr/script/daily_reboot.sh
      6. #
      7. # POWERSTATES:
      8. # 0 = Toogle Standby
      9. # 1 = Deepstandby
      10. # 2 = Reboot
      11. # 3 = Restart Enigma2
      12. # 4 = Wakeup form Standby
      13. # 5 = Standby
      14. # ##########################################################
      15. PATH=$PATH:/bin/:/usr/bin/:/sbin/:/usr/sbin/
      16. CONTROLFILE='/home/root/daily_reboot.done'
      17. WEBIF=0
      18. if [ -e $CONTROLFILE ]; then
      19. rm -f $CONTROLFILE
      20. fi
      21. if [ $(wget -q -O - http://127.0.0.1 | grep -c "<html>") != "0" ]; then
      22. touch $CONTROLFILE
      23. wget -q -O - http://127.0.0.1/web/powerstate?newstate=2 > /dev/null 2>&1
      24. fi
      25. exit 0
      Alles anzeigen



      standby_after_daily_reboot.sh

      HTML-Quellcode

      1. #!/bin/sh
      2. # ##########################################################
      3. # INSTALL:
      4. # copy this file to: /usr/script/standby_after_daily_reboot.sh
      5. # chmod this file: chmod 0755 /usr/script/standby_after_daily_reboot.sh
      6. #
      7. # POWERSTATES:
      8. # 0 = Toogle Standby
      9. # 1 = Deepstandby
      10. # 2 = Reboot
      11. # 3 = Restart Enigma2
      12. # 4 = Wakeup form Standby
      13. # 5 = Standby
      14. # ##########################################################
      15. PATH=$PATH:/bin/:/usr/bin/:/sbin/:/usr/sbin/
      16. CONTROLFILE='/home/root/daily_reboot.done'
      17. WEBIF=0
      18. cnt=0
      19. if [ -e $CONTROLFILE ]; then
      20. until [ $WEBIF -eq 1 ]; do
      21. # pruefen, ob das Web-Interface erreichbar ist
      22. if [ $(wget -q -O - http://127.0.0.1 | grep -c "<html>") = "0" ]; then
      23. sleep 10
      24. else
      25. WEBIF=1
      26. break
      27. fi
      28. cnt=`expr $cnt + 1`
      29. if [ $cnt -gt 12 ]; then
      30. # 2 Minuten gewartet => Abbruch
      31. break
      32. fi
      33. done
      34. if [ $WEBIF -eq 1 ]; then
      35. # Box in Standby schicken
      36. wget -q -O - http://127.0.0.1/web/powerstate?newstate=5 > /dev/null 2>&1
      37. fi
      38. rm -f $CONTROLFILE
      39. fi
      40. exit 0
      Alles anzeigen



      crontab - täglicher Reboot um 5.50 Uhr

      Quellcode

      1. # min hour day month dow command
      2. 50 5 * * * /usr/script/daily_reboot.sh


      Getestet auf einer DM800HDse mit "Newnigma2 v4.0.9 2014-02-23"


      cron Infos

      Quellcode

      1. # Falls cron noch nie ausgeführt wurde, erst mal starten...
      2. update-rc.d busybox-cron defaults
      3. /etc/init.d/busybox-cron start &
      4. # ...danach startet cron auch nach jedem Reboot
      5. # Nach Anpassungen cron neustarten!
      6. /etc/init.d/busybox-cron restart
      7. # Falls busybox-cron nicht funktioniert...
      8. opkg update && opkg install cron
      9. /etc/init.d/cron start &
      10. # cron-Einträge bearbeiten
      11. crontab -e
      12. # cron-Einträge anzeigen
      13. crontab -l
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von schorschi ()

    • schorschi schrieb:

      Ich habe die Skripte für meine Bedürfnisse angepasst und hänge diese hier an, hoffe du hast nichts dagegen.


      warum sollte ich was dagegen haben, das war damals mal schnell gescriptet. Wenn das jemand brauchen kann bzw. verfeinert/verbessert umso besser ...

      Die Lösung von @wwunsch wäre in deinem Fall auch gegangen, weil laufende Aufnahmen oder bevorstehende Timer unberücksichtigt sind. Aber scripten macht eben mehr Spaß ;)
    • Für Timer die anstehen hab ich das für mich so gelöst:

      Quellcode

      1. #Ermitteln ob eine Aufnahme geplant ist in 45min
      2. IP="192.168.1.10"
      3. TIMERLIST=$(wget -O- -q http://$IP/web/timerlist)
      4. STATE=$(echo "$TIMERLIST" | grep e2timebegin|sed 's/.*<e2timebegin>\(.*\)<\/e2timebegin.*/\1/' | awk -v myvar=$(date +%s) '{if ($1 > myvar && $1 < (myvar+2700)) print $1 }'| wc -l)
      5. if [ $STATE -eq 0 ];then
      6. STATE4="OK"
      7. else
      8. STATE4="-"
      9. fi


      Edit:
      $TIMERLIST geändert in "$TIMERLIST"

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Schnello ()

    • Hallo Schnello + Co ;)

      ist jemand von euch bereit mir die scripte zur verfügung zu stellen, als download, denn ich habs nicht so mit scripten ...

      Installieren kann ich sie dann hoffentlich alleine.
      Wäre super von euch !

      oder reicht mir das im ersten Beitrag ?
      Danke +
      LG