Frage zu VDRadmin 0.9x

  • Hi allerseits!


    Neben der Frage, ob man sich irgendwann auf einen 0.97er vdradmin mit Bigpatch freuen darf hätte ich heute mal folgende grundlegende Frage:


    Mein System: PII400, Nexus+Nova, ca 50GB PLatten, Debian Sarge, VDR 1.3.17 mit div Plugins, VDRadmin 0.95 mit Bigpatch (0.8?)


    Da mir der VDRadmin von zeit zu zeit abgeschmiert ist (speziell, wenn ich aus dem büro schnell mal was programmieren wollte) hab ich ein skript in die crontab gepflanzt, das vdr stündlich killt, die lockdatei entsorgt und neustartet....


    Beim ersten Zugriff nach dem Abschuss (das stündlicher Neustart somit fast jedesmal) geht der vdradmin für ca 3 Minuten auf Dauerstress (lt top ca 80-90%cpu), erst dann sehe ich die login seite.


    - was passiert in dieser Zeit? Arbeitet er jedesmal nach einem neustart (beim ersten zugriff) das EPG vollständig durch?
    - admin selbstoder evtl autotimer
    - kann man ihn mit einem parameter neustarten, dass er gleich nach dem restart mit der prozessorbelastung beginnen soll und nicht erst bei zugriff?
    - wie setze ich die priorität des vdradmin prozesses zurück (eine wiedergabe hat sich letztes mal 3 min nicht stoppen lassen)


    danke für die infos
    lg
    Bax


    PS: evtl muss ich mir ein anderes skript einfallen lassen, das nicht gleich neustartet, sondern schaut ob vdradmin geladen ist und reagiert und nur falls nicht neustart...

    VDR neu: AMD 64X2 4050e - 2GB Ram - 3,5TB HDs - Nexus 2.1 - Nova HD S2 - WinTV-T USB - Cinergy S2 PCI CI -
    Ubuntu 10.04 - yavdr stable ppa -
    remote - epgsearch - extrecmenu - live - skinelchi - streamdev - streamplayer - vodcatcher - xine - gallery2 - twonkymedia
    VDR2 SMT: 7020S, 80 GB - Dreambox 7000s (derzeit defekt)
    VDR3 Acer Revo 3610 mit yaVDR 0.2 - TT DVB-S2 USB

  • Hallo Bax,


    Zitat

    Original von Bax
    - was passiert in dieser Zeit? Arbeitet er jedesmal nach einem neustart (beim ersten zugriff) das EPG vollständig durch?


    ja


    Zitat

    - admin selbstoder evtl autotimer


    auch dies


    Zitat

    - kann man ihn mit einem parameter neustarten, dass er gleich nach dem restart mit der prozessorbelastung beginnen soll und nicht erst bei zugriff?


    warten ...
    ... oder per 'kill sighup ...' ein update starten. Pid steht in '/var/run/vdradmin.pid'


    Zitat

    - wie setze ich die priorität des vdradmin prozesses zurück (eine wiedergabe hat sich letztes mal 3 min nicht stoppen lassen)


    ???


    Zitat

    PS: evtl muss ich mir ein anderes skript einfallen lassen, das nicht gleich neustartet, sondern schaut ob vdradmin geladen ist und reagiert und nur falls nicht neustart...


    Das ist bestimmt die bessere Variante ...


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!


  • Gibt es dazu schon Ideen? Ich bin nämlich gerade auch genervt weil vdradmin sich verabschiedet hat und ich nicht auf den VDR komme :schiel


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • Hallo,


    trag in die crontab doch z.B. folgendes ein:


    Code
    */5 * * * * vdr [ -z "$(pidof -sx vdradmind.pl)" -o -z "$(wget --timeout=60 --quiet -O - http://user:password@video1.zh.local:8001/)" ] && { rm /pfad/zu/vdradmind.pid 2>&1 >/dev/null; /pfad/zu//vdradmind.pl 2>&1 >/dev/null; } 2>&1 >/dev/null


    "Wenn vdradmind.pl nicht mehr läuft oder kein HTML mehr kommt -> Neustart"

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Hi vejoun,


    danke Dir für den Vorschlag. Ich bin mit RegExp und shell Programmierung nicht wirklich fit, aber ich lerne gerne etwas dazu. Kannst Du mir in einer ruhigen Minute mal erklären, was die Zeile bedeutet (Stück für Stück). Ok, daß Du mit wget die http Abfrage machst ist mir schon klar (das und wie ich user:password und den Pfad anpassen muss, ist logisch. Mir geht es um die Art und Weise die Antwort von wget auszuwerten etc.).


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • Ich denke, daß ich die Syntax einigermassen verstanden habe. Dieser Link hat mir dabei ziemlich geholfen und ist eine (in meinen Augen) verständliche Einführung in die Unix Shellprogrammierung.


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • Das es so kompliziert aussieht liegt ja nur daran das es ein einzeiler ist. In ganz lang wäre es etwa so:



    Code
    */5 * * * * vdr /pfad/zu/script.sh 2>&1 >/dev/null


    Ich finde die Seite Programmierung der Bourne Again Shell auch ganz nett.

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Ich mußte das Script ein wenig abändern (ich weiß, es war ungestet):

    Ich habe die zusätzliche Abfrage für den Status von vdr eingefügt, da ich bei dem Versuch vdradmin (0.96) zu starten während vdr läuft diese Fehlermeldung bekomme:

    Code
    substr outside of string at /usr/local/src/vdradmind/vdradmind.pl line 1224, <GEN1> line 24402.


    Nun gibt es 2 Alternativen:
    1. Entweder ich finde eine Möglichkeit festzustellen, ob VDR gerade etwas aufzeichnet damit ich das Script nicht ausführe und VDR gestoppt wird während eine Aufnahme läuft, oder
    2. Ich finde heraus, woher die Fehlermeldung kommt wenn ich versuche vdradmin neu zu starten während VDR läuft.


    [EDIT]
    Zu Punkt 1:
    Es kommt ein wenig Licht in die Dunkelheit (liegt das am bevorstehenden Vollmond? 8) :(
    Mit 'svdrsend.pl NEXT rel' bekomme ich

    Code
    220 cinemaxx SVDRP VideoDiskRecorder 1.3.19; Wed Jan 26 20:56:40 2005
    250 2 7280
    221 cinemaxx closing connection

    7280 ist die Anzahl der Sekunden bis zur nächsten Aufnahme. Wenn diese Zahl negativ ist bedeutet dies, daß im Moment eine Aufnahme läuft. Wenn ich also auswerten kann, ob die Zahl negativ ist, kann ich im Script entscheiden, ob der VDR gestoppt werden darf. Ich hab da mal was in Perl gesehen (einen String an beliebigen Stellen -z.B. einem Leerzeichen- in Arrays zerlegen und auf das Array zugreifen -> Hier also xyz[2]. Das muss doch auch in der Shell gehen....
    [/EDIT]


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

    Einmal editiert, zuletzt von marcmerz ()


  • probier mal das:

    Zitat


    dummy=`svdrpsend.pl NEXT rel | grep '250' | awk '{print $3}'`
    if [ 0 -gt $dummy ] ; then command1; else command2; fi


    Gruß,
    Marcus

  • Hallo,


    Code
    SECONDS="$(svdrpsend.pl next rel | egrep "^250" | cut -d" " -f3)"
    if ( $SECONDS -lt 0 ); then do_something; fi


    Trotzdem wäre es besser den vdradmin-Fehler zu finden... ;D

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

    2 Mal editiert, zuletzt von vejoun ()

  • Vielen Dank für eure Hilfe. Allerdings ist die Ausgabe nicht vom Typ Integer:

    Code
    3611
    : integer expression expected line 4: [: 3611

    sondern wahrscheinlich ein String. Grrr.....ich hasse Computer :rolleyes:


    [EDIT]
    Wenn das nicht geht, kann man natürlich auch wieder testen, ob das erste Zeichen ein '-' ist.... Wie gut, daß Google nichts kostet...
    [/EDIT]


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

    Einmal editiert, zuletzt von marcmerz ()

  • Zitat

    Original von vejoun
    Hallo,


    Code
    SECONDS="$(svdrpsend.pl next rel | egrep "^250" | cut -d" " -f3)"
    if ( $SECONDS -lt 0 ); then do_something; fi


    Trotzdem wäre es besser den vdradmin-Fehler zu finden... ;D


    NEE. PHP jederzeit, aber Perl......ich hab doch auch so noch was zu tun :rolleyes: :rolleyes: :rolleyes:


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • Zitat

    Original von marcmerz
    Vielen Dank für eure Hilfe. Allerdings ist die Ausgabe nicht vom Typ Integer:

    Code
    3611
    : integer expression expected line 4: [: 3611

    sondern wahrscheinlich ein String.


    Zeig mal Deinen Code, bei mir geht das...

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Bax


    moeglicherweise verstehe ich deinen ansatz nicht.
    aber ich denke, immer gleich den VDR zu killen ist vielleicht etwas hart.


    wenn du zugriff via telnet oder ssh hast genuegt doch ein vdradmind.pl -k (sofern der prozess noch lauft).
    das sollte wenigstens den VDR nicht staendig abschiessen.


    gruss
    - cat -

  • Bash
    #!/bin/bash
    SECONDS="$(svdrpsend.pl NEXT rel | egrep "^250" | cut -d' ' -f3)";
    echo $SECONDS;
    if [ $SECONDS -gt 0 ]; then
      echo Jo;
    fi

    und die Ausgabe ist '0' ohne die ''. Ich hatte vorhin die "" übersehen in

    Code
    SECONDS="$(svdrpsend.pl NEXT rel | egrep "^250" | cut -d' ' -f3)";

    und deswegen wahrscheinlich den Fehler mit Integer erhalten(?). Wenn ich '( $SECONDS -gt 0 )' schreibe erhalte ich

    Code
    0
    /usr/local/bin/test.sh: line 4: /usr/local/bin/0: Permission denied

    Ich prüfe mit -gt weil ich feststellen will ob mein Script funktioniert. Das Ergebnis ist aber definitiv größer als 0 im Moment.

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

    Einmal editiert, zuletzt von marcmerz ()

  • Hmm, ja, irgendwas stimmt nicht, ich schau morgen mal. :(


    Gruss und N8.

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Vielleicht ist es einfacher zu prüfen, ob der String in $SECONDS (Anm: Probier mal eine andere Variable aus z.B. TIMER. SECONDS ist vorbelegt mit der Anzahl der Sekunden seitdem die Shell läuft. Durch die Zuweisung bekommt sie zwar 'eigentlich' einen anderen Wert, aber vielleicht liegt da der Fehler) ein '-' enthält anstatt zu versuchen, mit einem (vermeintlichen) String zu rechnen (den man ja -sofern es wirklich ein String ist- erstmal in einen Integer konvertieren müßte).


    Ich weiß auch nicht, warum das in der Shell so schwer ist. Ich habe mir mal den Codeschnipsel in Perl rausgesucht mit dem ich ebenfalls einen String auswerte, 'zurechtschneide' und dann für MRTG verwende. Um das Perl Script zu testen habe ich damals sowas wie:

    Code
    print eval(c[0] * -1);

    benutzt (an die Perl Experten: Bitte schlagt mich nicht, ich verstehe von Perl soviel wie ein Elefant vom Briefe frankieren. Der Codeschnipsel ist aus dem Kopf hingekritzelt und sehr wahrscheinlich nicht konform). c[0] (in meinem Fall immer negativ) wäre in diesem Fall der Inhalt von $SECONDS während eine Aufnahme läuft in

    Code
    SECONDS="$(svdrpsend.pl NEXT rel | egrep "^250" | cut -d' ' -f3)";

    Und das Ergebnis der Perl Zeile ist immer ein positiver Integer. Ob Perl jetzt so schlau ist den Variablentyp automatisch von STRING in INTEGER zu ändern, weiß ich nicht.


    [Off Topic]:
    Zur Erklärung: MRTG kann nur positive Zahlen verwenden. Der Wert in c[0] entstammt einer SNMP Abfrage an einen WLAN Router und enthält die Sendestärke in dBm (eine negative Zahl die allerdings mit snmpget als STRING ausgegeben wird).
    [/Off Topic]


    Vielen Dank für Deine Mühe und Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • Hallo,


    Zitat

    Original von marcmerz
    Vielleicht ist es einfacher zu prüfen, ob der String in $SECONDS (Anm: Probier mal eine andere Variable aus z.B. TIMER. SECONDS ist vorbelegt mit der Anzahl der Sekunden seitdem die Shell läuft. Durch die Zuweisung bekommt sie zwar 'eigentlich' einen anderen Wert, aber vielleicht liegt da der Fehler)


    Wusste ich doch das da nur ein ganz kleiner Fehler war. ;) mit einer anderen Variable bekomme ich jetzt auch Deinen Fehler.


    Hier prüfe uch einfach ob es ein "-" ist. Andernfall ist es immer eine Ziffer.

    Code
    seku="$(svdrpsend.pl NEXT rel | egrep "^250" | cut -d' ' -f3 | cut -c1)"
    [ "$seku" = "-" ] && { echo negativ; }


    Gruss.

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • ...und ich sitz gestern noch eine Stunde und frage mich, wie ich mit

    Code
    test $TIMER | grep "/^-/"...

    auf irgendeinen grünen Zweig kommen kann ;( ;( ;(


    Wenn ich gleich nach Hause gehe, werde ich das einbauen und dann versuchen herauszufinden, warum mir seit der VDR 1.3.18 mein vdradmin ständig wegsemmelt (und nicht mehr gestartet werden kann solange VDR noch läuft -> Fehlermeldung gibt es weiter oben).


    Vielen Dank für den 'Support'.....manche Dinge sind so einfach...aber wenn man etwas weiß, ist alles einfach... Auf jeden Fall hab ich wieder was dazugelernt.


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

  • vejoun
    Funktioniert erwartungsgemäß wie es soll :) Ich setze mein komplettes Script noch hier hinein.


    Was ich noch machen werde: Anscheinend ist die Shell nicht dazu gedacht, daß mit ihr gerechnet wird. Ich habe dann doch zu Perl gegriffen und folgendes gemacht:


    In der Shell lese ich die Zeit bis zum nächsten Timer aus

    Code
    secs="$(svdrpsend.pl NEXT rel | egrep "^250" | cut -d' ' -f3)"

    Dann ein Stück Perl Script (/usr/local/bin/test.pl)

    Code
    $zahl=ARGV[0]
    chomp $zahl
    @a=$zahl
    print eval(a[0] * 1,"\n");

    Und dann wieder in der Shell

    Code
    sec="$(/usr/bin/perl /usr/local/bin/test.pl $secs)";


    Das witzige ist, daß ich in dem Perlscript mit dem Wert den ich in $secs übergebe alles anstellen kann. Mupltiplizieren mit -1 funktioniert und jegliche anderen Rechenoperationen. Das was das Perlscript als $sec wieder an die Shell übergibt, ist aber wieder ein String. Ein

    Code
    if [ "$sec" -gt 0 ]; then

    ergibt genauso eine Fehlermeldung, wie ein

    Code
    if [ $"sec" -lt 0 ]; then

    bzw. bei Benutzung von '<' bzw. '>' anstatt '-lt' bzw. 'gt' evaluieren beide Abfragen zu '0' ??!!


    Egal....ich muss ja nicht alles wissen. Warum mache ich das noch wenn die Ursprungsanforderung (feststellen ob ein Timer gerade aktiv ist, falls das mittlerweile untergegangen ist...) erfüllt ist? Weil ich z.B. 3 Sekunden vor dem Beginn eines Timer meinen VDR nicht runterfahren möchte um vdradmin neu zu starten. Also muss ich auch die Zahl die ich in '$secs' erhalte auswerten. Und das geht in Perl wunderbar. Ich werde mir in Perl eine If-Abfrage schreiben und z.B. auf

    Code
    if $zahl < 180
    print (Go)
    else
    print (NoGo)

    prüfen und das dann in der Shell auswerten (einen String werde ich da wohl noch weiterverarbeiten können.... So kann ich verhindern, daß ich den VDR weniger als 3 Minuten vor dem Beginn eines Timers runterfahre nur um VDRadmin wiederzubeleben. Dazu kommt in die Shell noch eine sinnvolle Ausgabe für eine Logdatei und fertig ist die Laube (und ja, ich weiss, dass mein Code alles andere als gelungen ist...aber er tut was er soll ;) ).


    Gruß,
    Marcus

    Mein VDR built 21.07.04 15:29
    VDR 1.3.24enAIO2.2, DVB-CVS, FW261e (Plugins: dvd-cvs,epgsearch,femon,graphTFT,osd-teletext,text2skin-cvs,vcd,vdrcd,vdrconvert 0.2.0,mplayer) unter Suse 9.3
    Asus P4P800VM, P4 2.8Ghz, 512 MB in ATC-620C-BX1
    2x Maxtor 5A300J0, SD-M1802, 7" TFT (Pollin)
    TT DVB-C 2.1 (4MB SDRAM), SL DVB-T

Jetzt mitmachen!

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