Verbesserung für "vdrshutdown"

  • Hallo Forum!


    Mich hat es immer gestört, daß der vdr einfach so runterfährt, obwohl noch ein user eingeloggt ist. Deswegen habe ich das Skript "vdrshutdown" (von nvram-wakeup) ein bisschen modifiziert, so daß das Shutdown abgebrochen wird, falls noch jemand am rechner sitzt. Folgender Schnipsel ist also nur noch perönlich anzupassen:


    #!/bin/sh
    USERCOUNT=`who --count | grep users= | cut -f 2 -d "="`;

    if [ $USERCOUNT -gt 0 ];
    then echo "$USERCOUNT users are logged in."
    exit 1;
    else echo "No users are logged in."
    fi


    Wär doch nicht schlecht, wenn man das schon direkt in VDR oder nvram-wakeup reinbasteln könnte.


    Viele Grüße,
    coco.

  • Hi coco,


    ist zwar nicht neu (oder hier), aber eine kleine 'Verbesserung' hätte ich noch, falls VDR mit POWER bewusst heruntergefahren werden soll, auch wenn User eingeloggt sind oder ein Login 'mal abgeschmiert'/vergessen worden ist:
    zus. Überprüfung auf Parameter '5 <> 0', also hier


    Code
    if [ $5 -eq 0 -a $USERCOUNT -gt 0 ];
  • Hi coco,


    Zitat

    Mich hat es immer gestört, daß der vdr einfach so runterfährt, obwohl noch ein user eingeloggt ist. Deswegen habe ich das Skript "vdrshutdown" (von nvram-wakeup) ein bisschen modifiziert, so daß das Shutdown abgebrochen wird, falls noch jemand am rechner sitzt.


    jo, hat mich auch gestoert, aber auch, wenn noch ein tosvcd.sh, ein convert.pl oder mein convert2svcd oder ein setiathome-crunch ... laeuft.


    Gruesse
    Markus

    yaVDR 0.5.0a
    DD Cine S2 V6.5 & DuoFlex S2, ASRock B75 PRO3, NVidia GT610-SL, Core i3-2120T, 4GB, 60GB SSD, 1.5TB
    Samsung UE46F8090, Sony STR-DB780, 5.0 surround A.C.T. speaker

  • Zitat

    Original von egal
    zus. Überprüfung auf Parameter '5 <> 0', also hier

    Code
    if [ $5 -eq 0 -a $USERCOUNT -gt 0 ];


    ja, das ist gut. wusste nicht genau, wie das geht.


    vielen dank,
    coco.

  • Schaut euch mal die CVS-Version von vdrshutdown:
    ( http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/nvram-wakeup/nvram-wakeup/VDR/vdrshutdown?rev=HEAD&content-type=text/vnd.viewcvs-markup )



    die Zeile

    Code
    msg=`$CHECKSCRIPT`


    koennte man auch zu

    Code
    msg=`$CHECKSCRIPT $*`


    modifizieren, damit die Parametr weiter an das Skript uebergeben werden.bzw. wenn das CHECKSCRIPT nur dann ausfuehren, wenn $5 gleich null ist.


    EDIT: das mit $* werde ich gleich mal tun.

  • habe jetzt CVS geaendert (auch euer Beispiel eingefuegt). Die Web-CVS Schnittstelle ist auf SF.net etwas verzoegert, also hier die neue Version:

  • Zitat

    Original von Bistr-o-Math
    habe jetzt CVS geaendert (auch euer Beispiel eingefuegt). Die Web-CVS Schnittstelle ist auf SF.net etwas verzoegert, also hier die neue Version:



    Hi!
    Ich habe es eben mal ausprobiert und festgestellt, daß der VDR während des shutdown Skriptes anscheinend keine SVDRP-Befehle empfängt.
    Könnte natürlich auch an etwaigen Patches liegen, das weiss ich nicht genau.
    svdrpsend.pl gibt auf jedenfall "timeout" aus und bricht ab.


    Meine Lösung: einfach ein & nach dem Kommando, also
    $SVDRPCMD MESG $msg &
    Dann läuft der Befehl schon mal im Hintergrund und 10 Sekunden dürften genügen, um die Message anzuzeigen.


    Viele Grüße,
    coco.

  • ich habe folgendes im vdrshutdown:




    damit wird verhindert, das vdr während des DVD-brennens oder während des werbung-schneidens runterfährt.


    gleichzeitig wird notiert, dass vdr eigentlich runterfahren wollte (mit dem Anlegen der Datei /video0/shutdown). Weiterhin habe ich einen Cronjob laufen, der im Minutentakt folgendes ausführt:



    die ersten beiden if's guggen, ob vdradmin noch läuft (der hängt bei mir ab und zu), und das letzte if prüft, ob vdr runtergefahren werden sollte, aber es grad nicht ging (dann existiert die Datei /video0/shutdown). Falls dann auch noch vdr2dvd.sh und noad NICHT laufen, kann der Rechner runtergefahren werden.

    VDR(Via Epia M-10000, 512MB, 2xNexus-s, 120GB&160GB&160GB Samsung SpinPoint, NEC 1300 DVD+-R/RW, IR-Kit, VFD Noritake)
    Gehäuse: Eigenbau (s.o.)

  • Zitat

    Original von sn123py
    ich habe folgendes im vdrshutdown:


    Code
    ...
    if [ "`ps aux | grep vdr2dvd.sh | grep -v 'grep vdr2dvd.sh'`" != "" ]; then
    touch /video0/shutdown; exit 1; fi
    
    
    if [ "`ps aux | grep noad | grep -v 'grep noad`" != "" ]; then
    touch /video0/shutdown; exit 1; fi
    ...


    die beiden sachen kannst du jetzt in das CHECKSCRIPT tun.


    Zitat


    ...
    gleichzeitig wird notiert, dass vdr eigentlich runterfahren wollte ...


    Code
    ...
    if [ -e /video0/shutdown -a "`ps aux | grep vdr2dvd.sh | grep -v 'grep vdr2dvd.sh'`" = "" -a "`ps aux | grep noad | grep -v 'grep noad'`" == "" ]; then
            rm -f /video0/shutdown
            perl /vdr/VDR/svdrpsend.pl HITK POWER
            fi


    ... kann der Rechner runtergefahren werden.


    und wenn du inzwischen wieder fern schaust, faehrt VDR herunter.
    OK, es wird eine Meldung auf dem Bindschirm angezeigt, jedoch nur fuer 5 Sekunden.
    Entweder hat man sie gar verpasst, oder die 5 Sekunden reichen nicht, um schnell die Fernbedienung zu finden und eine Taste zu druecken...



    Warum machst du ueberhaupt so einen Aufwand? Nach MinUserTimeout (120min ist ein guter Wert) versucht VDR eh wieder runterzufahren...

  • Bistr-o-Math:


    Code
    pgrep 2divx                       && { echo Divx-Conversion is still running;  exit; }


    funktioniert leider nur halb, die PID´s werden per svdpsend mit ausgegeben
    grüsse
    tobias

    :vdr1 VDR User #626:fans
    VDR II: YeongYang A106, Fusi D1522, Celeron 2GHz, Frontend per DVB-s FF, 2xDVB-c, ATRIC-IR, YaVDR 0.3a
    VDR III HDTV: Inter-Tech 2008V mit iMonLCD, Atric, ASRock Extreme3 770 AM3, AMD Sempron 140 1x 2.70GHz AM3, 1,5TB WD15EADS, 2TB WD20EARS, 2x4GB DDR3-1600, NVidia GT520 passiv, 3x DVB-c, YaVDR 0.5 @ Samsung PS-50B550

  • Zitat

    Original von Tobias
    Bistr-o-Math:


    Code
    pgrep 2divx                       && { echo Divx-Conversion is still running;  exit; }


    funktioniert leider nur halb, die PID´s werden per svdpsend mit ausgegeben


    danke. Habe ich nicht dran gedacht. es sollte so etwas sein:

    Code
    pgrep 2divx >/dev/null 2>&1      && { echo Divx-Conversion is still running;  exit; }

    Ich werd's in der CVS Version aendern.

  • Mahlzeit!


    ich bastel auch seit einiger Zeit an so nem Checkscript für mich rum, damit der mir nicht immer beim Kernel kompilieren die Kiste runterfährt und bin da auf einen Fehler gestoßen (glaube ich):

    Code
    msg=`$CHECKSCRIPT $*`


    im vdrshutdown soll ja bewirken, dass alle Parameter an das Checkscript übergeben werden. Ist aber keine Aufnahme programmiert, dann ist $4 ein leerer String, der an vdrshutdown übergeben wird. Wenn ich das mit $* weiterreiche, dann werden nur noch vier Parameter übergeben, der leere String fällt raus. Im Checkscript soll aber $5 ausgewertet werden und ich bekomme den Fehler "Too many arguments". Genauso erhalte ich bei einer programmierten Aufnahme, wenn der Name aus mehreren Worten besteht, pro Wort ein Argument und wieder komme ich an $5 nicht ran.


    Wäre das nicht besser, wenn der Shutdown-Parameter nach vorne gezogen wird, z.B. auf $3 also zwischen Timer-Werte und Kanal- bzw. Sendungsname?

    Hardware: ABIT KT7-RAID, Athlon900, 80GB HDD, 256 MB RAM, DVB-S Rev.1.3, DVD-LW, 40x4 LCD blau inv., Zoltrix Nightingale mit opt. Modul, 10/100/1000 Ethernet, Verax-Lüfter für Netzteil, CPU und Gehäuse


    Gehäuse: Scenic Desktop mit Alu-Verkleidung (geschliffen, natur eloxiert)


    Software: LinVDR 0.6, VDR 1.3.11


  • hol dir doch bitte die CVS-Version von vdrshutdown. Dies sollte dort schon laengst behoben sein. (seit rev. 1.15)

  • joh hast recht! so gehts besser

    Hardware: ABIT KT7-RAID, Athlon900, 80GB HDD, 256 MB RAM, DVB-S Rev.1.3, DVD-LW, 40x4 LCD blau inv., Zoltrix Nightingale mit opt. Modul, 10/100/1000 Ethernet, Verax-Lüfter für Netzteil, CPU und Gehäuse


    Gehäuse: Scenic Desktop mit Alu-Verkleidung (geschliffen, natur eloxiert)


    Software: LinVDR 0.6, VDR 1.3.11

  • Hallo,


    hat jemand eine Idee, wie man in das checkscript von vdrshutdown einbauen kann, dass der Rechner nicht runterfährt wenn noch ein Benutzer mit einer Samba-Freigabe verbunden ist?


    Gruß
    cfeile

    meine VDR-Maschine:
    asus at3ion, RAM 4GB,
    DVB: TBS6981
    yavdr 0.3

  • Zitat

    Original von cfeile
    Hallo,


    hat jemand eine Idee, wie man in das checkscript von vdrshutdown einbauen kann, dass der Rechner nicht runterfährt wenn noch ein Benutzer mit einer Samba-Freigabe verbunden ist?


    Gruß
    cfeile


    man muesste smbstatus parsen. Ich habe samba aber seit Jahren schon nicht mehr benutzt. Also kann ich kein genaues Beispiel schreiben

  • Morgen


    Ganz Simpel, hat aber den Nachteil die Session muß sauber auf der Client Seite beendet worden sein, sonnst steht der Prozess immer drinnen.


    Code
    if (/usr/bin/smbstatus -p | egrep -q ^[0-9])
    then
         echo ....
    fi


    MFG Ronny

  • Hi,


    kam endlich dazu das auszuprobieren. Funktioniert. Danke.
    Nur eine Meldung erscheint nicht, echo gibt nichts aus, auch in /var/log/messages gibt es keinen Eintrag (wie z.B. wenn noch noad läuft)
    Für sauberes beenden auf der Client-Seite langt übrigens einfach abmelden des Benutzers (win XP).


    Gruß
    cf

    meine VDR-Maschine:
    asus at3ion, RAM 4GB,
    DVB: TBS6981
    yavdr 0.3

  • Is ja ganz net, was da so alles machbar ist.
    Aber irgendwie fehlt mir nach den ganzen durchgeblätterten Threads die Peilung wie ich jetzt die Datei CHECKSCRIPT aufbauen muß um bei einem aktiven User über Remote oder auch am Terminal direkt bzw. bei aktivem Prozess von vdrconvert oder so den shutdown zu verhindern. Hab schon verschiedenes aus diesem Thread eingebaut, aber meine Kiste fährt immer noch down wenn se will und ich darf wieder durchs Haus saußen und den Rechner neu booten und weiß nicht mehr was ich als letztes getan hab (Kann auch an schleichender Demenz liegen ;) )


    Könnte mal einer so net sein und ein fertiges CHECKSCRIPT zum downloaden anbieten ;D


    greetings

  • Zitat

    Original von schluzkrapfn
    Is ja ganz net, was da so alles machbar ist.
    Aber irgendwie fehlt mir nach den ganzen durchgeblätterten Threads die Peilung wie ich jetzt die Datei CHECKSCRIPT aufbauen muß um bei einem aktiven User über Remote oder auch am Terminal direkt bzw. bei aktivem Prozess von vdrconvert oder so den shutdown zu verhindern. Hab schon verschiedenes aus diesem Thread eingebaut, aber meine Kiste fährt immer noch down wenn se will und ich darf wieder durchs Haus saußen und den Rechner neu booten und weiß nicht mehr was ich als letztes getan hab (Kann auch an schleichender Demenz liegen ;) )


    Könnte mal einer so net sein und ein fertiges CHECKSCRIPT zum downloaden anbieten ;D


    greetings


    in vdrshutdown ist doch ein Beispiel gezeigt:

    Da entfernst du einfach alle Kommentare und schon hast du des:


    jetzt musst du nur noch alles anpassen. also stat "pgrep 2divx" machst du "pgrep vdr2dvd.sh"
    (ich glaube, so heisst das Skript von vdrconvert, welches ein DVD image erstellt)


    oder z.B. wenn du nach Benutzern checken willst, kann es sein,
    dass du den "grep" eindeutschen musst, also in etwa: "grep Benutzer=" statt "grep users="


    usw.


    Wenn du mit einem bestimmten "CHECK" Probleme hast, poste hier, was du versucht hast und wir
    wird schon einer helfen.

Jetzt mitmachen!

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