wunschliste: Das NAS als TV-Agent

Standard

#wunschliste #bash #NAS

Vor einiger Zeit hatte ich ja bereits das wunschliste bash-Skript vorgestellt, mit dessen Hilfe man Infos (Episoden, Inhalte, Ausstrahlungtermine) von Serien erhalten kann. In diesem Beitrag möchte ich zeigen, wie man dieses Skript als “TV-Agent” auf einem NAS nutzen kann.

Zum Hintergrund will ich nur kurz darauf eingehen, daß ich seit einiger Zeit verschiedene “VU+”-PVRs nutze – momentan eine “Uno4k”. Sie verfügt über einen sogenannten “FBC-Tuner”, d.h. es ist ein DVB-C-Tuner mit acht Demodulatoren. Es ist daher möglich mindestens acht Sendungen gleichzeitig aufzuzeichnen. Durchaus auch mehr, da sich auf einer Frequenz (Kanal) mehrere Programme befinden. Als Konsequenz schaue ich so gut wir gar nichts mehr “linear”, d.h. zu dem Zeitpunkt an dem jemand vorgesehen hat es müsste gesehen werden – womöglich so gar noch mit Werbung! 😉

So ergibt sich das “Problem” die Timer des PVR zuverlässig mit den Sendungen zu programmieren, die man gerne sehen würde. wunschliste vereinfacht das mit der im letzten Beitrag vorgestellten Option -l enorm. Nach dem Ausführen des Skripts mit geignet definierter Listendatei als “cron job” auf dem NAS hat man jeden Morgen eine eMail mit den aktuellen Timerprogrammiereungen!

Zunächst muß das Skript auf dem NAS “installiert” werden. Dazu kopiert man es zunächst z.B. auf eine Netzwerkfreigabe und verschiebt es nach dem Einloggen auf dem NAS (ssh) in ein Verzeichnis, das im $PATH enthalten ist, z.B. /usr/local/bin.


$ ssh -p 2200 user@192.168.1.111
user@192.168.1.111's password:
user@jknas:~$ cd /volume1/public/
user@jknas:/volume1/public$ ls -al wunschliste
-rwxrwxrwx+ 1 user users 15561 Jun 21 15:35 wunschliste
user@jknas:/volume1/public$ sudo mv wunschliste /usr/local/bin/
Password:
user@jknas:/volume1/public$ cd /usr/local/bin/
user@jknas:/usr/local/bin$ sudo chmod 755 wunschliste
user@jknas:/usr/local/bin$ ls -al wunschliste
-rwxr-xr-x 1 user users 15561 Jun 21 15:35 wunschliste
user@jknas:/usr/local/bin$ cd ~
user@jknas:~$ wunschliste -v
This is version v2.1a (2017/06/21) of wunschliste
(C) Josef Kleber gpl3

Damit steht das Skript nun auch auf dem NAS zur Verfügung! Aber wie kommt man nun zu den Timerprogrammierungen? Dazu kopieren wir folgendes Skript auf das NAS

Zunächst wechseln wir ins HOME-Verzeichnis des Users und definieren die Umgebungsvariable WL_PAYTV mit den Sendern, die grundsätzlich in den Ergebnissen ausgeschlossen werden sollen. Danach definieren wir die Variablen timestamp und die Tage today und tomorrow im benötigten ‘dd.mm.yyyy’-Format. Danach können wir die Linien und die mit grep gefilterte Ausgabe von wunschliste in die Datei aufnahmen.txt schreiben. Abschließend schreiben wir die Datei noch auf STOUT für die eMail-Benachrichtigung vom NAS.

Zu guter Letzt definieren wir in der “Systemsteuerung” des NAS noch einen täglichen “cron job” im “Aufgabenplaner”. Nach geeignetem Auffüllen der Datei wunschliste.rec erhält man dann jeden Morgen eine eMail mit den zu programmierenden Timern der nächsten zwei Tage!

Zusätzlich laufen bei mir noch wöchentliche “cron jobs” mit der Wunschliste für Serien und Filme mit folgenden Skripten:

Andere Beiträge zum diesem Thema gibt es unter dem Tag wunschliste!

Icon
wunschliste

README

wunschliste [options]
fetches list of episodes (with contents), upcoming broadcasts of
tv series (-t and/or -T) or the very same for movies (-m) using
www.wunschliste.de as online database. Tested with:
- CYGWIN_NT-10.0 2.8.0(0.309/5/3) 2017-04-01 20:47 x86_64 Cygwin
- Linux 3.2.40 #15101 SMP Mon May 22 10:01:58 CST 2017 armv7l
GNU/Linux synology_armada375_ds215j

See wunschliste -h for a more verbose description.

Umstellung TexLive-Mirror (pretest → standard) auf dem Synology NAS

Standard

Wie bereits im ursprünglichen Beitrag zum TeXLive-Mirror auf dem Synology NAS angekündigt möchte ich nun nach dem Release von TeXLive 2017 zeigen, wie man den Mirror sowie die eigene Installation auf Standard-TexLive 2017 umstellt.

Zunächst erzeugen wir im root-Verzeichnis des Webservers (/web) das Verzeichnis texlivemirror. Anschließend passen wir das Updateskript update_texlive.sh folgendermaßen an:

Wir behalten den Sync mit dem Pretest-Server, um den Start der nächsten Pretestphase auch ohne Ankündigung zu erkennen. Platz auf dem NAS wird dabei nicht verschwendet, da das Verzeicnis nach dem Ende der Pretestphase nur noch ein README enthält! Der rsync-Befehl ist wegen der unterschiedlichen Server auch leicht verschieden aufgebaut und zu gu­ter Letzt packen wir etwas Fleisch an den Knochen für die Status-eMail vom NAS an den User. Damit ist die Serverkonfiguration abgeschlossen.

Auf der Clientseite müssen wir nun noch das Default-Repository auf das neue Webserververzeichnis umstellen:

$ tlmgr option repository https://<NAS-IP>/texlivemirror
tlmgr.pl: setting default package repository to https://<NAS-IP>/texlivemirror

Zum Abschluß noch ein kleiner Test:

$ tlmgr update -list
tlmgr.pl: package repository https://<NAS-IP>/texlivemirror (verified)
tlmgr.pl: saving backups to C:/texlive/2017/tlpkg/backups
tlmgr.pl: no updates available

Damit haben wir unsere pretest-Installation erfolgreich in eine Standard-TeXLive2017-Installation verwandelt!

Ein TeXLive-Mirror (pretest) auf einem Synology NAS

Standard

Momentan starten wieder die Vorbeireitungen für TeXLive 2017, u.a. mit dem Einfrieren von TeXLive 2016, d.h. es gibt bis auf Weiteres keine Updates mehr. Daher scheint es ein günstiger Zeitpunkt zu sein, zu zeigen, wie man im Heimnetz einen eigenen TeXLive-Mirror betreiben kann. Im Speziellen befassen wir uns zunächst mit einer Pretest-Installation von TeXLive 2017 (bleeding edge). Sobald die Pretest-Phase abgeschlossen ist, zeige ich in einem weiteren Beitrag, wie man das Prozedere auf ein “normales” TeXLive 2017 umstellt. Dieser Artikel beschreibt die Vorgehensweise mit aktuellem DSM 6.1 auf dem Server (DS215j) und der Kombination Win10/Cygwin auf dem Client.

Vorbereitungen

Zunächst ist es erforderlich auf dem NAS die “Webstation” (Webserver) zu installieren und zu aktivieren, um später dem TeXLive-Manager eine URL anbieten zu können. Danach muß sichergestellt werden, daß auf dem NAS der ssh-Dienst läuft (Systemsteuerung → Terminal & SNMP).

Aus Sicherheitsgründen verwenden wir Port 2200 anstatt des Standart-Ports 22!

Spiegeln mit rsync

Für das Spiegeln der Inhalte zwischen einem der offiziellen Pretest-Server und dem NAS eignet sich rsync am Besten. Es sorgt für eine identische Kopie in einem Verzeichnis des Webservers (/web). Als Pretest-Server wählen wir den Server der tschechischen TeX-User-Group CSTUG.

Wir erstellen dazu das Shell-Skript update_texlive.sh:

Man achte dabei auf Unix-Zeilenenden (LF) und kopiere das Skript in das Root-Verzeichnis des Webservers (/web). Danach muß man sich per ssh auf dem NAS einloggen und sicherstellen, daß das Skript ausführbar ist!

$ ssh -p 2200 admin@<NAS-IP>
admin@<NAS-IP>'s password:

admin@jknas:~$ cd /volume1/web
admin@jknas:/volume1/web$ chmod +rwx update_texlive.sh
admin@jknas:/volume1/web$ ls -al
total 36
drwxrwxrwx+ 6 root root 4096 Apr 18 11:26 .
drwxr-xr-x 30 root root 4096 Mar 30 10:25 ..
drwxrwxrwx+ 3 root root 4096 Mar 30 10:25 @eaDir
-rwxrwxrwx+ 1 http http 1474 Jul 9 2016 index.html
-rwxr-xr-x 1 admin users 184 Apr 18 11:38 update_texlive.sh
drwx--x--x 2 http http 4096 Jul 9 2016 web_images

Abschließend können wir testen, ob mit einem manuellen Aufruf alles wie gewünscht funktioniert:

admin@jknas:/volume1/web$ ./update_texlive.sh

receiving incremental file list
tlpretest/
tlpretest/00_TIME.txt
tlpretest/README
tlpretest/install-tl
tlpretest/install-tl-advanced.bat
tlpretest/install-tl-unx.tar.gz
tlpretest/install-tl-unx.tar.gz.sha512
tlpretest/install-tl-unx.tar.gz.sha512.asc
tlpretest/install-tl-windows.bat
tlpretest/install-tl-windows.exe
^C

Im Verzeichnis finden wir nun einen neuen Ordner “tlpretest”

admin@jknas:/volume1/web$ ls -al
total 36
drwxrwxrwx+ 6 root root 4096 Apr 18 13:12 .
drwxr-xr-x 30 root root 4096 Mar 30 10:25 ..
drwxrwxrwx+ 3 root root 4096 Mar 30 10:25 @eaDir
-rwxrwxrwx+ 1 http http 1474 Jul 9 2016 index.html
drwxrwsr-x 4 admin users 4096 Apr 18 13:12 tlpretest
-rwxr-xr-x 1 admin users 184 Apr 18 11:38 update_texlive.sh
drwx--x--x 2 http http 4096 Jul 9 2016 web_images

Automatischer Aufruf (Task)

Um das Skript nun regelmäßig laufen zu lassen, erstellen wir im Aufgabenplaner des NAS einen neuen Task.

Laut Angabe der Website sollte der Buildvorgang jeweils gegen 5 Uhr (CEST) abgeschlossen sein. Wir starten daher unser Update um 6 Uhr.

Auf dem letzten Reiter geben wir noch den Speicherort unseres Skripts an.

Damit haben wir unter https://<NAS-IP>/tlpretest einen eigenen TexLive-Mirror zur Verfügung!

Gute Nacht Freunde (Reinhard Mey, 1972)

Installation

Nachdem das NAS über Nacht seinen Job erledigt hat, kopieren wir die Datei install-tl-windows vom NAS in ein Arbeitsverzeichnis auf den Client und führen sie aus:

$ ./install-tl-windows -repository https://<NAS-IP>/tlpretest -gui wizard

Gute Nacht Freunde 🙁

Es sind einfach zu viele Pakete und die Zigarette brannte mehr als zwei Stunden! Und ja, ich bin Teil des Problems! 😉

Was lange währt, wird endlich gut!

$ which latex
/cygdrive/c/texlive/2017/bin/win32/latex

$ latex -v
pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX)
kpathsea version 6.2.3
Copyright 2017 Han The Thanh (pdfTeX) et al.
There is NO warranty. Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.29; using libpng 1.6.29
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with xpdf version 3.04

Updates

Abschließend definieren wir noch unseren eigenen Mirror als Default-Repository:

$ tlmgr option repository https://<NAS-IP>/tlpretest


$ tlmgr update -self -all
tlmgr.pl: package repository https://<NAS-IP>/tlpretest (verified)
tlmgr.pl: saving backups to C:/texlive/2017/tlpkg/backups

Auf dem frisch installierten System gibt es natürlich keine Updates, aber alles funktioniert wie gewünscht!