Hallo,
Ich benötige mal Hilfe von ein paar Bash-Könnern. Ich habe eine Textdatei in der stehen Connections zu einem meiner Streams. Ich möchte daraus auslesen wieviele Listener der Stream gerade hat. Das Problem dabei ist, dass manche Listeners "zombies" sind die in Wirklichkeit keine Daten mehr erhalten und dass in dieser Datei mehrere Streams aufgelistet sind. Alles kann man aber genau erkennen, ich brauch nur ein Batchscript dass das auswertet mit RegEx und mir die Anzahl der Zeilen ausgibt, auf die diese Bedingung zutrifft.
Ich machs mal etwas konkreter, hier ein paar Zeilen aus der betreffenden Datei:
Wie man sieht besteht jede Zeile aus 8 Spalten. Zu erst eine Indexnummer, dann folgt der Name des Streams, dann eine IP des Listeners, ein HTTP Signal, "WAIT_FEED", dann die targetbitrate, dann die aktuelle bitrate und dann die Summe der übermittelten Daten.
Das Script müsste nun folgendes tun, mal im Psydocode ausgedrückt:
Nehme aktuelle Zeile,
Schaue ob "WAIT_FEED" drin vorkommt und ob Streamname = stream1.mp3 ist. Wenn aktuelle Bitrate größer als 1000 ist (also ein "k" drin vorkommt) dann ist das ein richtiger Listener.
In dem oben gezeigten Beispiel wäre also: 1 Listener das Ergebnis.
Ich denke für einen erfahrenen Bash-Scripter ist das ein Einzeiler, für mich eine unlösbare Aufgabe
Ich benötige mal Hilfe von ein paar Bash-Könnern. Ich habe eine Textdatei in der stehen Connections zu einem meiner Streams. Ich möchte daraus auslesen wieviele Listener der Stream gerade hat. Das Problem dabei ist, dass manche Listeners "zombies" sind die in Wirklichkeit keine Daten mehr erhalten und dass in dieser Datei mehrere Streams aufgelistet sind. Alles kann man aber genau erkennen, ich brauch nur ein Batchscript dass das auswertet mit RegEx und mir die Anzahl der Zeilen ausgibt, auf die diese Bedingung zutrifft.
Ich machs mal etwas konkreter, hier ein paar Zeilen aus der betreffenden Datei:
Code:
6 stream1.mp3 123.123.123.123 HTTP/1.1 WAIT_FEED 312k 322k 107M
7 stream2.mp3 123.123.123.123 HTTP/1.1 WAIT_FEED 312k 342k 107M
8 stream1.mp3 123.123.123.123 HTTP/1.1 SEND_DATA 312k 968 8828k
Das Script müsste nun folgendes tun, mal im Psydocode ausgedrückt:
Nehme aktuelle Zeile,
Schaue ob "WAIT_FEED" drin vorkommt und ob Streamname = stream1.mp3 ist. Wenn aktuelle Bitrate größer als 1000 ist (also ein "k" drin vorkommt) dann ist das ein richtiger Listener.
In dem oben gezeigten Beispiel wäre also: 1 Listener das Ergebnis.
Ich denke für einen erfahrenen Bash-Scripter ist das ein Einzeiler, für mich eine unlösbare Aufgabe