[gelöst]SVDRP Fake Proggi

  • Hi Spezialisten.


    Ich hab da ne (wahrscheinlich für euch) kleine Aufgabe.
    Vielleicht erst mal Hintergrundinfos:
    Mein Headless VDR Server versorgt mehrere unterschiedliche Clients. Ich habe ein Script geschrieben das alle 5min prüft ob in einem bestimmten IP Bereich per NetCat auf den Port 6419 geantwortet wird. Wenn nicht, weiß der Server das kein Client mehr verbunden ist und fährt herunter.
    Das funktioniert tadellos :)
    Jetzt kommen aber Clients dazu die XBMC nutzen. Die gemeinsame MySql Datenbank liegt auch auf dem Server. Somit darf der Server natürlich auch nicht schlafen gehen wenn irgendwo XBMC läuft.


    Jetzt wäre meine Idee, einfach auf den XBMC clients parallel zum XBMC Start ein Programm zu starten das diese NetCat Antwort auf Port 6419 simuliert.


    Ist sowas möglich??? Oder gibts vielleicht nen viel einfacheren Weg den Status von XBMC übers Netzwerk zu kontrollieren?


    Danke im voraus.
    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

    Einmal editiert, zuletzt von vectra130 ()

  • XBMC hat einen eingebauten HTTP Server. Mit curl könntest du schauen ob du vom jeweiligen Client ein response bekommst.
    Schau dir auch mal das vdr-addon-lifeguard an falls du es noch nicht kennst.


    Gruss
    tec

  • Ist sowas möglich??? Oder gibts vielleicht nen viel einfacheren Weg den Status von XBMC übers Netzwerk zu kontrollieren?

    XBMC announced seine Services über Avahi (avahi-browse steck im Paket avahi-discover):

    Code
    $ avahi-browse -ka
    [...]
    +   eth0 IPv4 XBMC-Alexander                                _airplay._tcp        local
    +   eth0 IPv4 002215ABA80F@XBMC-Alexander                   _raop._tcp           local
    +   eth0 IPv4 XBMC-Alexander                                _xbmc-jsonrpc._tcp   local
    +   eth0 IPv4 XBMC-Alexander                                _xbmc-events._udp    local
    +   eth0 IPv4 XBMC-Alexander                                _xbmc-jsonrpc-h._tcp local
    +   eth0 IPv4 XBMC-Alexander                                _http._tcp           local
    [...]

    Im Prinzip kann man dann einfach schauen, ob es einen bestimmten Service-Typ gibt, der noch von irgendeinem Rechner ("-l" schließt den lokalen Rechner bei der Abfrage aus) announced wird:

    Code
    $ avahi-browse -lt _xbmc-jsonrpc._tcp
    +   eth0 IPv4 XBMC-Alexander                                _xbmc-jsonrpc._tcp   local

    Die Abfrage sieht dann z.B. so aus:

    Code
    if avahi-browse -lt _xbmc-jsonrpc._tcp | grep -q "_xbmc-jsonrpc._tcp"; then 
      echo "thar she blows"
    else
      echo "Goodnight, everybody!"
    fi

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • tecfreak
    Der Http Server von XBMC soll dafür nicht genutzt werden. Der ist gesperrt, so das der nicht aktiviert werden kann (gibt nen Grund dafür ;) )


    @seahawk
    Das klingt interessant. Das werde ich mal testen. Danke


    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • So, Versuch macht klug ... Aber leider ohne Erfolg :(
    Der Dienst avahi-browse (befindet sich im Paket avahi-utils) findet diverse Services, aber leider keinen der auf den XBMC Kisten läuft. Die verwenden wohl kein Avahi.


    Weiter Ideen ?????

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Ist auf den clients der xbmc dienst zeroconf aktiviert?

  • Der ist deaktiviert. Mir geht es auch darum eine 100%ig sichere Möglichkeit zu finden ohne das jemand das das durch ändern von Einstelllungen "manipulieren" könnte. Deshalb die Idee mit dem Fake-SVDRP ;)

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Ein Avahi-Announcement für einen Rechner kannst du dir auf den Clients leicht selbst erzeugen (einfach eine passende Datei unter /etc/avahi/services/xbmc.service ablegen, wenn der avahi-daemon installiert ist). Dann braucht man schon root-Rechte um das zu verbiegen.
    Der Vorteil beim Ansatz über Avahi nachzusehen ob es noch einen laufenden Client gibt ist, dass der Server nicht wissen muss, welche IPs bzw. Hostnamen die einzelnen Clients haben.

    XML
    <?xml version="1.0" standalone='no'?>
    <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
    <service-group>
    <name replace-wildcards="yes">Client %h mit XBMC</name>
    <service>
           <type>_txt-xbmc._tcp</type>
           <txt-record>I need a running MySQL-Server</txt-record>
    </service>
    </service-group>

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wenn ich das richtig verstehe kann ich mir dann für jeden Dienst eine .service avahi Datri anlegen. So auch für den VDR. Somit könnte ich mir die SVDRP abfrage ob der VDR läuft ja auch sparen.
    Werde es später mal testen.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Wenn du das als Status-Anzeige für einen bestimmten Dienst haben willst (und nicht als Merkmal, dass der Rechner läuft), musst du die Service-Datei beim Start in das Verzeichnis kopieren und beim Stoppen wieder löschen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wenn das so easy funktioniert wäre das der Hammer :)
    Bin leider noch unterwegs :(

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • ES GEHT !!!!!!!! ICH WERD BEKLOPPT .............. ES GEHT!!!!!!!!!!!! :)


    So, nachdem ich auf dem Client avahi-daemon installiert hab wurde der Client auch vom Server mit avahi-browse gefunden.
    Das war schonmal prima. Hab mir jetzt noch ins VDR-XBMC Wechsel-Script die Funktion eingebaut das beim Wechsel jeweils das passende status.service File angelegt wird.
    Werde jetzt alle Clients mit Avahi ausstatten, dann weiß der Server jederzeit wieviel VDR bzw XBMC Clients am laufen sind.


    Klasse. Komplett anderer Lösungsweg als angenommen, aber 100%ige Lösung.


    Vielen Dank @seahawk und @ tecfreak für die freundliche Hilfe :)
    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

Jetzt mitmachen!

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