homebridge-wol

  • Hallo,


    Ich habe in meiner Container Station auf dem Qnap TS-853pro Firmware 4.3.6.0805 die oznu/homebridge installiert.

    Mit dieser möchte ich per WOL meine Qnap SS-439pro starten und abschalten. Dieses plugin habe ich installiert:


    https://www.npmjs.com/package/homebridge-wol


    In meiner Config.json sieht der Eintrag für dieses Plugin so aus:


    Code
    "accessory": "NetworkDevice",
    "name": "nas-ss439",
    "ip": "192.168.1.3",
    "log": false,
    "mac": "xx:xx:xx:xx:xx:xx",
    "shutdownCommand": "ssh 192.168.1.3 poweroff"


    Aufwecken funktioniert super und zuverlässig leider habe ich beim abschalten probleme.


    Ich habe verschiedenes mit dem shutdownCommand experimentiert leider komme ich nicht zum erfolg.


    In einer "normalen" SSH Verbindung am TS-853pro funktioniert es so wie ich es aktuell stehen habe, leider aber mit mit der homebridge da tut sich nichts.

    Wenn ich im Terminal der Container Staion diesen Befehl eingebe kennt er ssh nicht.


    Wie könnte ich denn zum Erfolg kommen ?


    Grüße Roland

    Einmal editiert, zuletzt von toegelr ()

  • man kann bei ssh kein Passwort mit übergeben. Installiere dir "sshpass", damit kannst du das dann machen. Die Syntax findet man über die Websuche. Reboot-Beispiel-Script auf meinem Raspi:

    #!/bin/sh

    sshpass -p passwort ssh -o StrictHostKeyChecking=no -t nutzername@ip.addresse sudo reboot

    exit

  • das ist halt der Nachteil von Containern, man hat kein eigenes vollständiges Linux. Da ist man mit einer VM besser bedient.

    .... ich weis es nicht ;)

  • Mit dieser möchte ich per WOL meine Qnap SS-439pro starten und abschalten.

    Per WOL starten kann ich verstehen, aber per WOL abschalten nicht.

    Und wenn Du das NAS mit dem oben von Dir angegebenen Befehl herunterfährst, wirst Du es mit WOL auch nicht mehr aufwecken können.

  • das ist halt der Nachteil von Containern, man hat kein eigenes vollständiges Linux. Da ist man mit einer VM besser bedient.

    völliger Quatsch. Wenn man sich ein wenig mit der Technologie auseinandersetzt, wird man schnell merken, dass es je nach verwendetem Basisimage sehr wohl ein vollständiges Linux sein kann.

    Zu der Frage "wie bekomme ich das in den Container"
    Antwort Nummer 1: mach es nicht. Durch die Lösung mit sshpass wird dein Passwort im Klartext irgendwo abgespeichert. Belese dich ein klein wenig wie ssh funktioniert und verwende stattdessen eine passwortfreie anmeldung mit Hilfe eines Public/Private Keys auf der Ubuntuusers Wikiseite ist das z.B. ganz gut erklärt: https://wiki.ubuntuusers.de/SS…zierung-ueber-Public-Keys

    Antwort Nummer 2: falls du weißt was du tust und wirklich unbedingt die unsichere Methode verwenden willst, kannst du die entsprechenden Pakete in dein Dockerfile hinzufügen und das Image dann neu bauen. Da dein Image scheinbar auf Alpine Linux basiert müsste der folgende Befehl zum Dockerfile hinzugefügt werden: RUN apk add --update --no-cache openssh sshpass

  • Danke für die Antwort, ich verwende meine beiden NAS nur im Lokalen Netzwerk. Am Router ist "alles" geschlossen nur Ports für OpenVPN sind offen. Ich würde es riskieren das mein passwort ersteinmal im klartext in der config.json vorkommt. Wenn das klappt werde ich den Weg ohne Passwort versuchen.


    Es handelt sich um den oznu/homebridge Container worin die homebridge sehr gut läuft ! Da ich in der Materie eher nicht sehr gut eingearbeitet bin kann ich den Befehl RUN apk... nur probieren (ohne das ich wirklich weis was ich da tue:-) ).


    Soll ich das per startup.sh machen oder in dem Terminal das ich vom Container aus starten kann wo er ssh nicht kennt ?

  • Der korrekte Weg ist der folgende:

    1. nimm das Dockerfile des Containers (oznu/homebridge) und speichere es auf dem NAS
    2. füge die oben genannte Zeile mit dem RUN Befehl hinzu
    3. gehe per SSH auf dein NAS in das Verzeichniss mit dem Dockerfile
    4. führe den Befehl docker build . aus
    5. Du solltest nun ein Image haben, was alle Pakete aus oznu/homebridge enthält und zusätzlich die Pakete openssh und sshpass

    Um das ganze zunächst zu testen kannst du, wie selbst schon angesprochen, das Terminal aus der Container Station GUI verwenden und dann apk add --update --no-cache openssh sshpass ausführen, um zu schauen ob es klappt. Wo genau du dann den Befehl anpassen musst weiß ich nicht, da ich mich mit Homebridge konkret nicht auskenne.

  • Hallo,


    Ich wollte Deine Empfehlung testen, leider komme ich da schon nicht weiter ich bekomme die Meldung:


    Code
    -sh: run: command not found

    Ich bin per SSH mit dem Qnap verbunden.

    Kann mir bitte jemand helfen ?

  • Kannst du mal das entsprechende Dockerfile posten, mit dem hinzugefügten RUN Befehl?

    Und wann genau kommt tritt die Fehlermeldung auf? Nach dem Ausführen von docker build .?

  • Bevor ich mit dem wol weitermache und ich jetzt schon auf weitere Hilfe bitte wollte ich die homebridge auf die letzte version updaten bzw. bringen auf 0.4.46.

  • Vielen Dank für Deine / Eure Hilfe ich habe ziemlich einfach ssh und sshpass sowie auch ffmpeg mit der startup.sh der oznu/homebridge docker container installieren können mit z.B. für sshpass: apk add --no-cache sshpass


    Jetzt kann ich im Terminal des Containers SSH sowie SSHPASS ausführen allerdings bekomme ich noch ein "Permission denied, please try again :(


    Mittels SSH 192.168.1.2 poweroff kann ich von qnap 853 mein qnap ss-439 abschalten.


    Folgenden Befehl habe ich brobiert in der oznu/homebridge:


    sshpass -p passwort ssh 192.168.1.3 poweroff


    Wenn ich "nur" ssh 192.168.1.3 poweroff eingeben werde ich nach dem Passwort gefragt und wenn ich es eingebe bekomme ich trotzdem ein Permission denied :(


    Mache ich da noch einen Fehler ?

    Einmal editiert, zuletzt von toegelr ()

  • Mit welchem Nutzer läuft denn das ganze? Hast du mal ein sshpass -p passwort ssh admin@192.168.1.3 versucht? Ich könnte mir vorstellen, dass du standardmäßig als anderer Nutzer in dem Container angemeldet bist.

  • SUPER Danke das war's ! :)


    Ich hatte es Gestern Abend noch so brobiert:


    sshpass -ppasswort ssh -o StrictHostKeyChecking=no 192.168.1.3 user@admin poweroff


    Mit dem hatte es nicht geklappt dieses Kommando habe ich denke ich aus der wol Anleitung.


    Jetzt bin ich happy, im Nachhinein ist es sehr einfach gegangen aber ohne Deine/Eure Hilfe hätte ich es noch nicht geschafft.

    Die HomeBridge im Container am Qnap ist eine Super Sache jetzt muss ich nur noch im HomeKit das Geofencing hinbekommen das der meine Steckdosen mit den Axis Kameras automatisch aus und einschaltet wenn wer das Zuhause verlässt bzw. Heimkommt. Das gehöhrt aber nicht hierher...

  • Aber Wake on LAN bekommst Du dann nicht hin, oder?

    Im ausgeschalteten Zustand (->poweroff) geht das doch nicht.

  • Oh ja das funktioniert "perfekt" jetzt auch im HomeKit, anders würde es für mich auch keinen Sinn machen !

    Bis vor kurzem habe ich meine SS-439pro mit einer WoL iOS App aufgeweckt und mit der iOS app Qmanager ausgeschaltet. Hat auch funktioniert aber viel zu umständlich für mich zumindest das ausschalten. Meine beiden NAS sind nur per VPN erreichbar das ich mit meinem Netgear Router aktiviert habe. Das Problem war für mich das es von Ausserhalb nicht leicht aufzuwecken war. Ausschalten mit dem Qmanager ging immer mit VPN.

    Jetzt habe ich einen "Schalter" der sogar funktionieren würde wenn keines meines NAS von aussen erreichbar wäre auch nicht per VPN. Der TS853-pro läuft 24/7 den "kleinen" NAS brauche ich nicht 24/7.


    Falls man es braucht könnte ich den NAS jetzt auch in einer Szene bzw. Automation einbinden.


    Was ich mir wenn ich Zeit und Geduld habe ansehen könnte ist das ich so wie tuxflo vorgeschlagen hat das Passwort nicht im klartext in einem Befehl etc. mitzusenden.


    Könnte jemand eventuell das Risiko erörtern das ich habe wenn die NAS bzw. mein Heimnetz nur per VPN erreichbar sind und ich am 853-pro das pw des SS-439pro in einem Container verwende ? Oder ist die Homebridge im Container eine Schwachstelle ? Ich verlasse mich halt doch auf das VPN...

  • Nachdem das Abschalten von meinem NAS mit dem wol Plugin so gut funktioniert dachte ich das man über dieses Plugin eventuell auch meine Externe Festplatte(n) trennen kann. Ich habe an dem TS-853pro wo auch die Containerstation samt HomeBridge läuft ein externes Raid5 mit dem Terramaster DS300. Ich würde da an Befehl unmount denken. Leider kennt den der oznu/homebridge Container nicht. Kann man den nachinstallieren wie ssh oder sshpass ?

    Falls das irgendwie geht würde ich das Terramaster per Befehlszeile Trennen und dann per Szene im HomeKit mit einer EVE Steckdose ausschalten.

    Zum Einschalten müsste ich wahrscheinlich auch wenn ich die EVE Steckdose einschalte den Power Knopf am Terramaster drücken.

  • Vermutlich liegt es nur daran, dass das Vorgehen zwar "unmounten" heißt, aber der entsprechende Befehl dazu heißt umount, also ohne "n". Versuche es einfach damit nochmal. mount und umount sind essentielle Basisbefehle in einem Linux System und ich kann mir nicht vorstellen, dass der Container nicht nicht mit dabei hat.

  • Ok, Danke das werde ich testen, habe nur einmal so ins blaue brobiert. Hast Du noch einen Tipp wie ich das richtige Device erwische ? Mit:

    Code
    sudo fdisk -l

    Habe ich das externe Terramaster (noch) nicht erkannt.

  • mount gibt doch eine Liste aller gemounteten Laufwerke aus. So viele können das doch nicht sein.