Falsche Ausgabe bei Timerabfrage

  • Hallo Forum,


    ein kleines Problem was folgendermaßen zeigt:


    Ich möchte in einem Bashcript folgenden Befehl ausführen:


    TEMP=$(/usr/bin/svdrpsend $IP $SVDR_PORT next rel)


    In $TEMP steht folgender Wert:


    221 localhost closing connectionrder 2.4.7; Sat Mar 25 19:58:45 2023; UTF-8


    Ich benötige aber die relative Zeitangabe.


    Hat jemand eine Idee wie ich das gebacken bekomme?


    Vielen Dank im voraus

    Einmal editiert, zuletzt von fnu () aus folgendem Grund: Was soll das mit der Grossschrift?

  • Die Ausgabe ist 2-zeilig. Hier sieht das so aus:

    Code
    svdrpsend next rel
    220 hdvdr2 SVDRP VideoDiskRecorder 2.6.4; Sat Mar 25 20:12:35 2023; UTF-8
    250 340 25
    
    und 30 Sekunden danach:
    220 hdvdr2 SVDRP VideoDiskRecorder 2.6.4; Sat Mar 25 20:13:05 2023; UTF-8
    250 340 -5
  • Bei mir sogar dreizeilig:

    Code
    220 VDR-2204-Dev SVDRP VideoDiskRecorder 2.6.4; Sat Mar 25 20:23:19 2023; UTF-8
    250 2 30581
    221 VDR-2204-Dev closing connection

    Damit bekommst du die Zeile, die du willst:

    Code
    svdrpsend next rel | head -n 2
  • Hallo Ihr, Klappt so immer noch nicht. Ich denke der VDR erkennt die Option "rel" nicht. In dem Skript wird bei folgenden zwei Schreibweisen immer das selbe ausgegeben.


    svdrpsend $IP $SVDR_PORT next rel | head -n 2

    svdrpsend $IP $SVDR_PORT next | head -n 2

  • Sorry, stimmt, du musst auch noch die erste Zeile weg bekommen:

    Code
     svdrpsend next rel | head -n 2 | tail -n 1
  • Ok, das wäre nicht das Problem, meine Rückmeldung vom VDR sieht im Bashscript so aus:


    250 26 Sat Mar 25 22:06:00 2023order 2.4.7; Sat Mar 25 21:48:24 2023; UTF-8


    Hier fehlt die relative zeit bis zum nächsten Timer.


    Wenn ich auf der Konsole


    svdrpsend 10.10.10.15 6419 "next rel"


    eingebe, habe ich folgende Ausgabe:

    220 localhost SVDRP VideoDiskRecorder 2.4.7; Sat Mar 25 22:06:54 2023; UTF-8

    250 26 -55

    221 localhost closing connection


    Hier ist die relative Zeit angegeben. Es müssen aber die Anführungsstriche dabei sein, sonst funktioniert es auch auf der Konsole nicht

  • Hast du wirklich bash ?

    Das Skript

    Code
    #/bin/bash
    TEMP=$(svdrpsend next rel | head -n 2 | tail -n 1)
    echo $TEMP

    Bringt bei mir

    Code
    250 2 24006
  • Ich habe das Skript original kopiert und eingefügt, einmal auf einem Raspberry von dem die Fernabfrage geschehen soll und einmal auf meinem SuSE VDR Server. Jetzt das komische. Das Skript direkt auf dem Server ausgeführt bringt die richtige Ausgabe. Das selbe Skript, erweitert mit IP und Port, auf dem Raspberry ausgeführt bringt die falsche Ausgabe wie oben angegeben. Ich denke iwi wird das "rel" nicht übers Netz mit übertragen.

  • Ich kenne ja den Inhalt deiner Variablen nicht, aber das "-p" und "-d" ist da schon mit drin, oder ?

    Code
    Options: -d hostname        destination hostname (default: localhost)
             -p port            SVDRP port number (default: 6419)
  • Ein schneller Versuch (/usr/bin/svdrpsend binary mit scp auf meinen Desktop kopiert) gibt


    Code
    [walter@woody ~]$ ./svdrpsend -d hdvdr2 -p 6419 next rel
    220 hdvdr2 SVDRP VideoDiskRecorder 2.6.4; Sat Mar 25 22:39:18 2023; UTF-8
    250 340 -8778
    221 hdvdr2 closing connection

    Scheint hier zu funktionieren.

    Läuft das Script mit der Ausgabe in eine Variable?

  • Jetzt habe ich einfach im Skript ebenfalls das next rel in Hochkomma gesetzt und es funktioniert. Die Zeile sieht also so aus:


    TEMP=$(/usr/bin/svdrpsend $IP $SVDR_PORT "next rel" | head -n 2 | tail -n 1)


    Danke für Eure Hilfe. Wünsche eine gute Nacht.

Jetzt mitmachen!

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