Stdin2tcp
Aus open7x0.org
Das eigens von Lemmi für die M740AV entwickelte Kommando stdin2tcp ermöglicht es, Streams der Box im Netzwerk via TCP/IP verfügbar zu machen. stdin2tcp leitet dabei die Standardeingabe an alle angemeldeten TCP-Clients weiter.
Inhaltsverzeichnis |
Aufruf
Bei Aufruf ohne Angabe von Parametern erfolgt die 'usage'-Ausgabe:
*** stdin2tcp V1.03 - Dirk Clemens - 2006-09-04 *** usage: stdin2tcp [options] port -b n : buf size, 0..1024 KiB -s : send output to stdout too -f : follow appended data (like tail -f) -q : quiet (log level=0) -v : verbose (log level=2) -V : more verbose (log level=3) port : TCP/IP port, 1..65535
Durch die Option '-b' kann ein globaler Buffer (Größe in KiB) angelegt werden, indem die letzten Daten der Eingabe zwischengelagert werden. Bei einem Verbindungsaufbau werden dann zuerst diese Daten gesendet.
Durch die Option -f wird die Standardeingabe nicht beim Erreichen des Dateiendes geschlossen. Stattdessen wird auf die Vergrößerung der Datei gewartet. Dieses funktioniert ähnlich wie 'tail -f'.
Bei Verwendung der Option -s wird die Ausgabe zusätzlich an stdout weitergeleitet, ähnlich wie 'tee'.
Der Server speichert sonst keine Daten zwischen. Sollte ein Client die Daten nicht schnell genug entgegen nehmen, dann können Daten verloren gehen. In diesem Fall erfolgt keine Nachricht an den Client.
Ein angemeldeter Client kann durch das Senden von EOT (CTRL-D, ASCII 4) den Server zum Beenden der Verbindung auffordern. Dazu muß das Zeichen alleinig oder gefolgt von CR oder LF gesendet werden. Alle anderen Daten werden vom Server eingelesen und ignoriert.
Programmquelle
Das Programm ist in C geschrieben. Die Quellen des Programmes sind im SVN abgelegt:
Das Programm wurde mit dem alten toolchain übersetzt.
Benötigte Firmware
Das Programm ist in Lemmis Firmware enthalten und wird für diverse Loggings verwendet. Ansonsten kann es auf allen Firmware-Versionen mit telnet-Zugang verwendet werden.
Tips
Auf einem Unix-System (also auch auf der M740AV) kann man mit bash und awk die Ausgabe mit einem Zeitstempel ergänzen und auf dem Bildschirm verfolgen:
awk '{print strftime("%T ") $0}' </dev/tcp/m740av/12001
'm740av' ist der DNS-Name der Box und kann auch durch eine IP-Adresse ersetzt werden.
Kommandos in »Lemmis Firmware«
Verwendete Ports
In der VDR Firmware werden die folgenden Ports verwendet:
- 21 (ftp), 22 (ssh), 23 (telnet), 80 (http), 2001 (SVDRP), 8765 (lircd)
- 3000 (VDR Plugin streamdev)
- 12000 (aktuellen Zustand abfragen)
- 12002 (kmsg log), 12006 (dropbear debug log), 12007 (VDR debug log)
- 12100 (Konfig+Doku abfragen), 12101 (Konfig abfragen), 12102 (Konfig setzen)
In der Lemmi-Firmware werden die folgenden Ports verwendet:
- 21 (ftp), 22 (ssh), 23 (telnet), 80 (http), 8765 (lircd)
- 10001 (PVR-Pilot)
- 10101 (osd2tcp), 10102 (txt2osd)
- 12000 (aktuelle Lemmi-Settings)
- 12001 (wavbox log), 12002 (kmsg log), 12003 (RECORDER_LOG)
- 12004 (timer log), 12005 (key control debug log), 12006 (dropbear debug log)
- 12007 (VDR debug log)
- 12100 (Get Lemmi-Settings+Doku), 12101 (Get Lemmi-Settings), 12102 (Set Lemmi-Settings)

