Wie Uhr setzen bei shutdown?

  • Hallo,


    acpiwakeup läuft bei meinem CTVDR4, nachdem ich HWCLOCKACCESS=no in der /etc/default/rcS setze.
    Nun möchte ich beim shutdown die Zeit setzen.
    Nun habe ich unter /usr/share/vdr/shutdown-hooks ein script "S80.ntpdate" erstellt, in der "hwclock --systohc" ausgeführt werden soll.
    Das Script wird ausgeführt, die Hardware-Uhr aber nicht gestellt. Vielleicht weil vdr (nicht vdrdevel!) nicht als root läuft? Setze ich ein "su - -c" davor erhalte ich die interessante Meldung "Entschuldigung." bei der Ausführung.
    Irgend welche Tipps?


    Vielleicht auch eine elegante Methode, den Rechner beim täglichen - ungewollten - ACPI-Wakeup wieder schlafen zu schicken. D.h. wenn der Rechner bei einem Timer-Entrag aber falschen Tag gestartet wurde, keine Tasten-/Fernbedienungseingabe innerhalb einer bestimmten Zeit erfolgt ist und auch möglichst unter Berücksichtigung dass kein streamdev-Serverzugriff erfolgt ist.


    Werner

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Hallo,


    wenn wirklich fehlende root Rechte die Ursache sind kann man sich (natürlich unter Sicherheitsaspekten höchst bedenklich ...) wie folgt helfen:


    Den Befehl aus einem Shell-Skript mit Setuid-Bit setzen. Ich will nicht auf die Sicherheitsproblematik eingehen, sonder nur kurz erwähnen, das damit das Skript mit root Rechten ausgeführt wird.


    So geht's:



    1.) Shell-Skript anlegen:


    echo "#?/bin/sh hwclock --systohc " > irgendwohin/bin/hwclock_setuid.sh


    2.) ggf. Besitzer ändern:


    chown root:root irgendwohin/bin/hwclock_setuid.sh


    3.) Setuid Bit setzen:


    chmod ug+s irgendwohin/bin/hwclock_setuid.sh


    Dann sollte es unter /usr/share/vdr/shutdown-hooks ausführbar sein.


    Gruß
    Gurky

    c't VDR 1.4.1-1ctvdr4 (e-tobi Repository) Kernel : 2.6.16-ct-1,
    VIA ME-6000, WinTV Nexus-S rev2, SAMSUNG SP1614N, ATA DISK drive , TEAC DV-W50D, ATAPI CD/DVD-ROM drive

  • Danke Gurky,


    das hilft mir zumindest erst mal weiter, wenn sich so zeigt, dass es an den Rechten liegt. Werde es mal ausprobieren (gerade läuft erst mal ein Backup).


    Werner

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Gurky


    Also so geht's leider auch nicht. Also irgendwie komme ich anscheinend nicht mit. Wenn ich als root "hwclock --systohc" eingebe klappt es, mit dem besprochenen "hwclock_setuid.sh" passiert wieder nichts (obwohl als root ausgeführt und Eigentümer/Gruppe der Datei root und "Set User ID" und "Set Group ID" bei Ausführung gesetzt ist :dead

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Zitat

    Original von mag128
    Also was sagt /var/log/message?


    Nichts - kann auch nichts weil im Script offensichtlich lediglich ein Kommentar steht ;)
    Kommt davon wenn man als Linux-Unbedarfter nichts falsch machen will und alles so eintippt wie vorgeschlagen - also alles in einer Zeile steht mit # davor :D


    Noch eine dumme Frage: was ist der Unterschied zwischen #?/bin/sh und #!/bin/sh in der ersten Zeile in einem Script?


    Gebracht hat das Ganze aber genauso nichts - als root ausgeführt (egal ob direkt, das hwclock_setuid.sh oder mein S80.ntpdate) klappt das Setzen der Zeit, beim Shutdown jedoch nicht! Im Log steht S80.ntpdate wurde ausgeführt. ;(


    Also langsam gebe ich das mit dem acpiwakeup auf, ich weiß ja genauso wenig wie ich den Rechner dazu bringe wieder runterzufahren, nachdem er jeden Tag startet, auch wenn er nicht braucht (Zapping Timeout kommt auch icht in Frage weil ich ja auch streamen will - und da ist auch oft ein vdr restart nötig da der streamserver beim ersten Mal nicht will) :( :(


    Und vdradmin will auch oft nichts anzeigen, hab da ein sleep beim Start aber das ist auch keine wirklich saubere Lösung und nützt auch nicht immer was.
    Also ich geb's langsam komplett auf :doof

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

    Einmal editiert, zuletzt von scovery ()

  • Zitat

    Original von mag128
    Hast Du, wie oben geschrieben, den gesammten Pfad eingetragen?


    War gerade dabei ein edit deshalb zu machen.
    Ja, hab ich selbst schon vorher probiert (/sbin/hwclock --systohc) - niente :( :(


    Vielleicht nochmal alles komplett:


    In /usr/share/vdr/shutdown-hooks habe ich die Datei S80.ntpdate:


    #!/bin/sh
    echo "Updating clock..."
    ntpdate ptbtime1.ptb.de
    /usr/local/sbin/hwclock_setuid.sh
    echo "Updating clock done."


    In /usr/local/sbin/hwclock_setuid.sh steht:


    #!/bin/sh
    echo "geht" > /var/log/geht
    /sbin/hwclock --systohc


    hwclock_setuid.sh wird beim Shutdown ausgeführt ("geht" wird erstellt).
    Attribute von hwclock_setuid_sh - ah Moment, sehe gerade dass Set User/Group ID bei Ausführen nicht mehr gesetzt sind, ist wohl beim Bearbeiten zurückgesetzte worden. Wenn wieder gesetzt wird offenbar hwclock_setuid.sh nicht ausgeführt, jedenfalls wird "geht" nicht mehr erzeugt.

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

    2 Mal editiert, zuletzt von scovery ()


  • Hallo,


    versuche mal


    #?/bin/sh /sbin/hwclock --systohc


    (A) mit ?
    (B) in einer Zeile


    Im Prinzip geht's auch in einem Mehrzeiler, aber was Shell Skript Programmierung angeht bin ich ein wenig rostig geworden.


    Viel Erfolg,
    ciao Gurky

    c't VDR 1.4.1-1ctvdr4 (e-tobi Repository) Kernel : 2.6.16-ct-1,
    VIA ME-6000, WinTV Nexus-S rev2, SAMSUNG SP1614N, ATA DISK drive , TEAC DV-W50D, ATAPI CD/DVD-ROM drive

  • Zitat

    Original von Gurky
    versuche mal


    #?/bin/sh /sbin/hwclock --systohc


    (A) mit ?
    (B) in einer Zeile


    Das geht ja eben überhaupt nicht (dachte eine Zeile wäre eben der Fehler) - und nochmal die Frage: was ist der Unterschied mit Fragezeichen?

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Hab's jetzt extra nochmal probiert - so wie genannt wird die Zeile überhaupt nicht ausgeführt - nicht mal wenn ich das Skript als root direkt starte (die Mehrzeilen-Version funktioniert wenigstens bei direktem Aufruf als root - was auch immer der Unterschied mit Fragezeichen ist).

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

    Einmal editiert, zuletzt von scovery ()

  • Ergänzung: unter vdrdevel klappt das Stellen der Uhr problemlos.


    Offenbar ist vdr so "abgedichtet", dass es unmöglich ist, root-Befehle "unterzuschieben".

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Zitat

    Original von scovery
    Hab's jetzt extra nochmal probiert - so wie genannt wird die Zeile überhaupt nicht ausgeführt - nicht mal wenn ich das Skript als root direkt starte (die Mehrzeilen-Version funktioniert wenigstens bei direktem Aufruf als root - was auch immer der Unterschied mit Fragezeichen ist).


    Hast recht, war ein voller Irrläufer :doof - dachte da war was mit den Rechten an den Subprozess schieben. Die Zeile läßt sich bei mir schon ausführen, macht aber nichts - auch keine Fehlermeldung.


    Hab' auch noch ein wenig gegooglet: setuid skripte scheinen unter Linux eh' nicht zu tun (unter AIX ging's ...)


    Noch eine Idee wäre es, /sbin/hwclock direkt setuid und execute für group zu verpassen und in die Gruppe vdr zu schieben. Hab' ich aber noch nicht ausprobiert. Dann sollte der vdr der unter grup vdr läuft hwclock unter root Rechten starten können.


    Gruß,
    Gurky

    c't VDR 1.4.1-1ctvdr4 (e-tobi Repository) Kernel : 2.6.16-ct-1,
    VIA ME-6000, WinTV Nexus-S rev2, SAMSUNG SP1614N, ATA DISK drive , TEAC DV-W50D, ATAPI CD/DVD-ROM drive

  • Also mir ist es jetzt zu dumm geworden und ich hab jetzt folgendes Skript unter /etc/rc0.d verlinkt:


    Tut zumindest was es soll. Leider musste ich auch S90.acpiwakeup dahingehend ändern, dass nicht direkt in /proc/acpi/alarm geschrieben wird. /proc/acpi/alarm auszulesen, während des hwclock --systohc zu sichern und danach zurückzuschreiben geht komischerweise auch nicht, der Rechner startet dann nicht zur gewünschten Zeit.
    In S90.acpiwakeup ist angemerkt, dass der Author nicht wüsste, was zu setzen sei, wenn kein "Aufwachen" nötig wäre und setzt trotzdem eine Zeit - verstehe ich nicht ganz. Hab das gleich so geändert, dass nur dann die Zeit in /proc/acpi/alarm geschrieben wird wenn benötigt.

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

  • Also ich habe hier im Portal irgendwo mal ein Script gefunden, dassbeim Runterfahren einfach die durch EPG geupdatete Zeit als Systemzeit einträgt. Das funzt gut (zumindest unter c't VDR4, unter 2 irgendwie nich, aber der wird eh formatiert jetzt). Das könnte ich sonst weitergeben, weiss aber nicht mehr von wem es stammt!

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Zitat

    Original von SurfaceCleanerZ
    Also ich habe hier im Portal irgendwo mal ein Script gefunden, dassbeim Runterfahren einfach die durch EPG geupdatete Zeit als Systemzeit einträgt. Das funzt gut (zumindest unter c't VDR4


    Und war es nicht für die vdrdevel-Version? Dann könnte es interessant sein.
    Woher die Zeit stammt (EPG oder ntp) ist ja eher nebensächlich.
    Allerdings werde ich mir wohl demnächst ein Hardware Wakeup bauen - dann ist die Sache für mich (hoffentlich) eh erledigt :)

    yaVDR 0.5 Server: Satix S2 Dual, Technisat DVB-T
    yaVDR 0.5 Client: POV ION-MB330
    yaVDR 0.3 Client: S100 mit Scart-Out
    Raspberry 2 Clients

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!