Einen WOL (Wake on LAN) Befehl an ein Gerät wie z.B. ein NAS zu schicken, um es starten zu lassen, stellt normalerweise kein großes Problem dar. Doch das NAS dann wieder in den Ruhemodus zu versetzen, das war für mich eine kleine Herausforderung. Mittels FHEM konnte ich das allerdings bewerkstelligen. Im nachfolgenden Blogpost möchte ich kurz erklären, wie es auch bei dir zu Hause funktioniert. Die Anleitung bezieht sich auf eine funktionierende FHEM-Installation (hier erklärt) auf einem Raspberry Pi. Das von mir verwendete NAS-Modell lautet: TVS-463.
Letzte Aktualisierung am 18.03.2024 um 23:29 Uhr | Werbung | Bilder: Amazon Product Advertising API
Dem User „fhem“ einen passwortlosen Login ermöglichen
Auf dem QNAP einen Public Key erzeugen. Dazu per ssh und dem Admin-Account auf dem NAS einloggen. Die Login-Daten sind hier natürlich an die Eigenen anzupassen.
ssh-keygen -t rsa –C admin@IP-QNAP
Anschließend mit dem User „pi“ auf dem Raspberry einloggen. Das Standardpasswort lautet, sofern nicht geändert, „raspberry“.
login pi
Mittels nachfolgendem Befehl wird der User „fhem“ für einen passwortlosen Login eingestellt.
sudo nano /etc/passwd
Hier muss nun „fhem:x:999:20::/opt/fhem:/bin/false“ auf „fhem:x:999:20::/opt/fhem:/bin/bash“ geändert und gespeichert werden.
Es muss für den User „fhem“ nun noch ein Passwort vergeben werden.
sudo passwd fhem
Jetzt wird sich mit dem User fhem eingeloggt und ein RSA Key erzeugt.
login fhem
ssh-keygen -t rsa -C fhem@IP-FHEM
Nun ab damit auf das QNAP.
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@IP-QNAP
Der Login für den User „fhem“ sollte nun wieder deaktiviert werden, da dieser nun ohne Passwort klappen sollte. Also wieder zurück in: „fhem:x:999:20::/opt/fhem:/bin/false“
sudo nano /etc/passwd
Bevor es zum nächsten Schritt geht, muss sich nun einmalig als User „fhem“ auf dem QNAP angemeldet und der Key bestätigt werden.
ssh admin@IP-QNAP
Bash-Skript
Es wird nun ein Bash-Skript erzeugt, das später bei dem shutdown Befehl via FHEM ausgeführt wird. Dieses Skript muss auf dem Raspberry in den Ordner „/opt/fhem/FHEM/“ hinein und heißt „qnap.sh“. Der Skriptinhalt ist der folgende:
#!/bin/bash ssh [email protected] '/bin/echo mem > /sys/power/state 2>/dev/null &' DATE=$(date +%Y.%m.%d) TIME=$(date +%T) echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen" exit 0
WOL-Modul in FHEM anlegen
Um gleich den QNAP via FHEM ein- und ausschalten zu können, müssen in die „fhem.cfg“ noch folgende Zeile eingetragen werden. Folgende Anpassungen sind hier nötig: Die MAC-Adresse des QNAP, sowie die IP-Adresse.
define QNAP WOL 01:XX:XX:XX:02 10.0.0.10 BOTH attr QNAP event-on-change-reading state attr QNAP genericDeviceType switch attr QNAP interval 60 attr QNAP room Buro
Durch „attr QNAP interval“ wird alle 60 Sekunden geprüft, ob das QNAP online bzw. eingeschaltet ist.
Letzter Schritt
In FHEM muss nun oben in die obere Zeile noch der nachfolgende Befehl abgesetzt werden.
attr shutdownCmd { qx("/opt/fhem/FHEM/qnap.sh") }
Es sollte nun möglich sein in FHEM per WOL-Modul das QNAP einzuschalten, sowie in den Ruhemodus zu versetzen.
Meine Meinung:
Die Anleitung ist zwar recht knapp gehalten, benötigt meiner Meinung nach aber alles Nötige um Erfolg zu haben. Sollte es noch irgendwo hapern, bitte einfach kurz einen Kommentar hinterlassen. Bis dahin: Fröhliches ein- und ausschalten.
Hallo,
was ist denn mit der Zeile..
„Nun ab damit auf das QNAP.“
..gemeint?
Gruß Chris
Hallo Chris,
mit dem Befehl wird der erstellte RSA-Key auf das Qnap kopiert.
Viele Grüße
Michael
Ok, cool. Danke für die coole Aunleitung und die schnelle Antwort!
Gruß Chris
Oh, eine Frage noch:
Beim anlegen des WOL-Modul hat die geXte MAC-Adresse nur vier Stellen, obwohl es sechs sein müssten. Gehört 01: zur MAC-Adresse dazu?
Gruß Chris
Oh, ja das ist vielleicht etwas falsch zu verstehen.
Natürlich musst du die 6-stellige MAC-Adresse benutzen. Diese sind grundsätzlich 6-stellig, die 01 war kam nur von dem Beispiel und musst nicht am Anfang mit dabei stehen.
Viele Grüße
Michael
Hallo,
leider quittiert mein Qnap „ssh-keygen -t rsa –C admin@IP-QNAP“ mit Folgendem:
Too many arguments.
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
[-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-m key_format] [-f input_keyfile]
ssh-keygen -e [-m key_format] [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-f known_hosts_file] [-l]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
[-j start_line] [-K checkpt] [-W generator]
ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
[-D pkcs11_provider] [-n principals] [-O option]
[-V validity_interval] [-z serial_number] file …
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file …
ssh-keygen -Q -f krl_file file …
„IP-QNAP“ habe ich natürlich durch die IP-Adresse meines Qnaps ersetzt.
Schade.
Gruß Chris
Du darft nicht copy und paste machen gib es einfach per Hand ein.
Gruß Alex