# Informationen zum exec Plugin

Das ist ein "plugin" für den Video Disk Recorder (VDR).

Geschrieben von: Winfried Köhler <handygewinnspiel AT gmx DOT de>

Projekt Internet Seite: free.pages.at/wirbel4vdr

Aktuelle Version: free.pages.at/wirbel4vdr/exec/index2.html

Beschreibung: führt zeitgesteuert Shell Kommandos innerhalb VDR aus.

Lizenz: GPL

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING for more information.

0. Einführung

______________________________________________________________________

Dieses Plugin führt Kommandos zu einer gegebenen Zeit aus (ähnlich den Timern wie von VDR bekannt). Diese Timer werden per SVDRP (oder über das exec Timer Menü) programmiert und können Shell Kommandos ausführen oder Messages in das VDR OSD einblenden. Abgelaufene Timer (solche deren Startzeit bereits in der Vergangenheit liegt und die "single-shot" Timer sind) werden anschließend gelöscht.

1. SVDRP Befehle

______________________________________________________________________

Alle Beispiele hier nutzen das Perl Script svdrpsend.pl aus dem VDR Quellcode. Alternativ können auch andere Scripte/Programme für diesen Zweck benutzt werden, z.B. kann auch die BASH Shell direkt benutzt werden oder telnet, netcat..
BITTE LEST DIESE KOMPLETTE HILFE DATEI BEVOR IHR DIESES PLUGIN BENUTZT.

1.1. NEWT (New Timer)

______________________________________________________________________
Das SVDRP Kommando NEWT programmiert einen neuen Timer. Die Syntax ist

NEWT {DATE}:{TIME}:{TIMEOUT}:{ACTIVE}:{ACTION}:{WAKEUP}:{DETACH}:{EXECSTRING}

Format Beschreibung:
{DATE}:

- YYYY-MM-DD komplettes Datum mit 4 digits Jahr (1900..9999), 2 digits Monat (1..12) und 2 digits Tag (1..31).
  Genau 10 Zeichen insgesamt.
- MM-DD wie zuvor, aber ohne Angabe des Jahres, das Jahr wird angenommen als *dieses Jahr*
  Genau 5 Zeichen insgesamt.
- DD wie zuvor, aber ohne Angabe des Monats, der Monat wird angenommen als *dieser Monat*
  Genau 2 Zeichen insgesamt.
- -1 Das Datum wird angenommen als *heute*
- MTWTFSS Jede mögliche 7-Zeichen (genau 7!) lange Kombination aus "M", "T", "W", "F", "S", "-", (wöchentlich wiederholter Timer); "-" hat dabei die Bedeutung 'nicht laufend diesen Wochentag', z.B.
  `MTWTFSS` täglich
  `MTWTF--` jeden Tag, außer Wochenende
  `-----SS` nur Wochenende
  `--W----` Mittwochs
  usw. ;)
  Hinweis: Erster Tag ist Montag, letzter Tag ist Sonntag.

{TIME}:

- hhmm 2 digits Stunde (0..23) und zwei digits Minute (0..59)
- -1 *jetzt*
  Hinweis: für wiederholte Timer wird -1 NICHT akzeptiert.

{TIMEOUT}:

- 0 z.Z. noch nicht implementiert, reserviert für später. Immer 0.

{ACTIVE}: Timer aktiv

- 0
  nicht aktiv
- 1
  aktiv

{ACTION}:

- 1
  run shell command
- 2
  shutdown computer durch VDR. Hinweis: {EXECSTRING} muss in dem Fall "SHUTDOWN" sein.
- 3
  show message in VDR's OSD
- 4
  show warning in VDR's OSD

  Hinweis: alle anderen Nummern reserviert für später.

{WAKEUP}: (siehe VDRs INSTALL Datei, Kapitel "Automatic shutdown")

- 0
  Computer nicht aufwachen für diesen Timer. Hinweis: Falls der Computer zum Zeitpunkt des Timers nicht läuft, wird der Timer NICHT ausgeführt!
- 1
  Computer aufwachen für diesen Timer.

{DETACH}: detach shell process, siehe vdr/thread.h. Nur für Shell Kommandos.

- 0
  no detach (default)
- 1
  detach

{EXECSTRING}: Ein String mit 1 .. 255 Zeichen, der

- ein shell command ausführt (default)
- einen Nachrichten Text in VDRs GUI anzeigt
- einen Warnungs Text in VDRs GUI anzeigt
- "SHUTDOWN" um VDR herunter zu fahren.
  repräsentiert.

  Hinweise:

  1. EXECSTRING darf KEINE Doppelpunkte ":" enthalten!
  2. mindestens 1 Zeichen lang.
  3. maximal 255 Zeichen lang (inclusive quoting).
  4. Die Interpretation von EXECSTRING wird durch {ACTION} definiert.
  5. Je nach Shell Kommando wird partial quoting " " und full quoting ' ' benötigt.

  Dieses Beispiel programmiert

  - einen single shot Timer (einmalig ausgeführt)
  - am 24.12.2007
  - um 17:30 Uhr
  - und führt das Shell Kommando 'play Chrismas_Song' aus
  - Der Computer wird nicht aufgeweckt (und falls er aus ist wird dieser Timer NIE ausgeführt!)
  - Hinweis: Anwendung von partial quoting für das shell command.

          -bash-3.00# svdrpsend.pl plug exec NEWT 2007-12-24:1730:0:1:1:0:0:"play Chrismas_Song"
          220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 16:29:34 2007
          250 new timer accepted.
          221 TopLap closing connection

1.2. DELT (Delete Timer)

______________________________________________________________________

Das SVDRP Kommando DELT löscht einen Timer mit angegebenem Index. Die Syntax ist

DELT {INDEX}

Index läuft von 0 (erster Timer) bis Anzahl-1 (letzter Timer).

Dieses Beispiel löscht den sechsten Timer in der Timer Liste, siehe Kommando LSTT:

      -bash-3.00# svdrpsend.pl plug exec DELT 5
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 17:25:08 2007
      250 timer deleted
      221 TopLap closing connection

1.3. RUNT (Run Timer)

______________________________________________________________________

Das SVDRP Kommando RUNT führt einen Timer mit angegebenem Index jetzt aus. Die Syntax ist

RUNT {INDEX}

Index läuft von 0 (erster Timer) bis Anzahl-1 (letzter Timer).

Dieses Beispiel startet den vierten Timer in der Timer Liste, siehe Kommando LSTT:

      -bash-3.00# svdrpsend.pl plug exec RUNT 3
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 17:25:08 2007
      250 timer started
      221 TopLap closing connection

1.4. LSTT (List Timers)

______________________________________________________________________

Das SVDRP Kommando LSTT listet alle Timer auf. Die Syntax ist

LSTT

Beispiel

      -bash-3.00# svdrpsend.pl plug exec LSTT
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 16:32:14 2007
      250 2007-12-24:1730:0:1:1:0:0:play Chrismas_Song
      221 TopLap closing connection

1.5. CLRT (Clear Timers)

______________________________________________________________________

Das SVDRP Kommando CLRT löscht alle Timer. Die Syntax ist

CLRT

Beispiel

      -bash-3.00# svdrpsend.pl plug exec CLRT
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 17:26:24 2007
      250 list cleared
      221 TopLap closing connection

1.6. NACT (Next ACtive Timer)

______________________________________________________________________

Das SVDRP Kommando NACT gibt den nächsten aktiven Timer zurück. Die Syntax ist

NACT

Beispiel

      -bash-3.00# svdrpsend.pl plug exec NACT
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 17:29:17 2007
      250 next active timer 2007-12-24:1730:0:1:1:0:0:play Chrismas_Song
      221 TopLap closing connection

1.7. NWUT (Next WakeUp Timer)

______________________________________________________________________

Das SVDRP Kommando NWUT gibt den nächsten Timer zurück der den Computer aufweckt. Die Syntax ist

NWUT

Beispiel

      -bash-3.00# svdrpsend.pl plug exec NWUT
      220 TopLap SVDRP VideoDiskRecorder 1.5.9; Sun Sep 23 17:29:17 2007
      250 next wakeup timer 2007-09-23:1900:0:1:1:1:0:update_dvb_driver.sh
      221 TopLap closing connection

2. Zusätzliche Dateien

______________________________________________________________________

Dieses Plugin speichert seine Timer in $CONFIGDIR/plugins/exectimers.conf, wobei $CONFIGDIR z.B. /etc/vdr ist. Die Logdatei wird in /var/log/exec.log gespeichert.

Diese Datei wird automatisch generiert und ohne jegliche Warning überschrieben. Das Format dieser Datei entspricht exakt dem Kapitel SVDRP Kommandos - NEWT.

3. Wichtige Hinweise

______________________________________________________________________

1. Dieses Plugin ist GPL Software. Siehe Datei COPYING für Details. Dieser Sourcecode darf weiterverwendet werden, solange die daraus entstehende Software EBENFALLS UNTER DER GPL veröffentlicht wird UND erkennbar ist WOHER DER ENTNOMMENE QUELLTEXT STAMMT. Das bedeutet, dass dann der Quelltext der daraus entstandenen Software inklusive Nachweis des ursprunglichen Quellcodes ebenfalls frei (kostenlos) veröffentlicht werden muss!
2. Dieses Plugin prüft nur von Zeit zu Zeit, ob einer seiner Timer ausgeführt werden muss. Die erreichbare Genauigkeit beträgt nur eine Minute.
3. Programmiere NIE Timer, welche dein System gefähren oder Seiteneffekte haben. Es ist DEINE Verantwortung, dieses Plugin zu nutzen oder die Gefährdung durch Angriffe auf dein System abzuschätzen, besonders wenn dein VDR unter einem privilegiertem Account läuft, z.B. root.

   ===========================WARNUNG!!!============================================
   JEDER NUTZER DER DIE MÖGLICHKEIT HAT EXEC TIMER ZU PROGRAMMIEREN KANN SO KOMMANDOS ÜBER DIESES PLUGIN MIT DEN RECHTEN DEINES VDR AUSFÜHREN!!

   DU MUSST ENTWEDER DIE PERMISSIONS ODER DIE LOGINS AUF DEINEN VDR COMPUTER EINSCHRÄNKEN. =================================================================================

4. Es wird keine Garantie gegeben, dass dieses Plugin so funktioniert wie erwartet. Bitte sendet Bugs/Wünsche an den Plugin Autor.

   have phun.. wirbel (see you at vdr-portal.de)